千家信息网

Google Go语言基础知识有哪些

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要讲解了"Google Go语言基础知识有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Google Go语言基础知识有哪些"吧!先来个
千家信息网最后更新 2025年02月01日Google Go语言基础知识有哪些

这篇文章主要讲解了"Google Go语言基础知识有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Google Go语言基础知识有哪些"吧!

先来个hello world

hello.go

package main //声明本文件的package名    import "fmt" //import语言的fmt库——用于输出    func main() { var str string = "hello world" //str := "hello world" //var str = "hello word"    fmt.Println(str)  }

运行

有两种方式可以解释运行

1、先编译:go build hello.go

再运行:./hello

2、也可以直接进行编译运行(其实下面这个命令实际是编译成hello.out再执行):go run hello.go

对于习惯了C系列语言的同学来说,会对go的语法很不习惯。***,go没有使用";"作为语句结束标志;第二,go是变量在类型前面,变量初始化还可以如注释的那两行语句,不用指定类型,go编译器可以从初始化表达式的右值导出该变量应该声明为哪种类型,这让go看起来有点像动态语言,这也可能为什么有人说它是python 4.0的原因吧。

go很可能是***个将代码风格进行强制统一的语言,例如go语言要求public的变量名必须以大写字母开头,private变量则以小写字母开关,这种做法不仅免除了public,private关键字,更重要的是统一了风格。还有,对于判断语句,如果你写成这样:

if str == "descur"{     .... } else{     .... }

是不能编译通过的,一定要写成这样:

if str == "descusr"{     ... }else{     ... }

这可能对那些在微软怀抱中长大的孩子来会很痛苦,但对像我这些有代码洁癖的人来说未尝不是好事。其实统一了代码风格,进行团队合作时是很有益的。

编程哲学

C语言是纯过程式的,这和它产生的历史背景有关。C#/JAVA语言则是高度的面向对象语言,典型表现是它们的体系里不存在孤立的方法,这些方法必须是属于某个类。而go没有去否认任何一方,而是用批判吸收的眼光,综合了各种编程思想,融合众家之长,极力维持语言特性的简洁,力求小而精,越深入go,你就会发现go真的是太简洁了。

从编程范式的角度看,go是变革派,不是改良派。

虽然go属于面向对象语言,但在go的概念里没有面向对象这个概念,只有结构体。go的类具有高度的粒子性,如下面的代码:

type rect struct {       width, height int  }    func (r *rect) area() int { //求面积       return r.width * r.height   }       func (r *rect) perimeter() int{ //求周长       return 2*(r.width + r.height)   }       func main() {       r := rect{width: 10, height: 15}       fmt.Println("面积: ", r.area())       fmt.Println("周长: ", r.perimeter())        rp := &r       fmt.Println("面积: ", rp.area())       fmt.Println("周长: ", rp.perimeter())   }

类和类方法完全分开,只有在初始化对象后才进行调用,减少了耦合度。go没有构造函数和析构函数。由于go语言中没有虚函数,也就没有vptr,支持构造函数和析构函数就没有太大价值。

其次,go语言反对函数和操作符重载,而C#,C++,和JAVA允许同名函数或者操作符,只要它们的参数列表不同。虽然重载解决了一小部分OOP问题,但却给这些语言带来了极大的负担,并且这种方法对解决问题问题并没有带来多大价值,所以go就不提供重载。

再次,go反对继承,反对虚函数和虚函数重载。其实,go也提供了继承,只不过采用了组合的方法来提供:

type Car struct{      Base      ...  }    func (color *Car) Drive(){      ...  }

放弃了大量的OOP特性后,go提供了一份相当棒的功能:接口。你可能会有疑问,所有面向对象语言也有接口啊?但那些面向对象语言的接口都基本上一样,而go的却跟它们不一样。

go语言中的接口与其他语言***的一点区别是它的非侵入性。在C#等面向对象语言中,为了实现接口,你需要从接口继承,如:

public interface IBankAccount {     void PayIn(decimal amount); }
class SaverAccount : IBankAccount {      public void PayIn(decimal amount)     {         Console.WriteLine("This is PayIn");     }  }

在go语言中,实现类的时候无需从接口派生,如:

type SaverAccount  struct{   //go     ... }  var saveAccount IBankAccount = new(SaveAccount)

只要实现了IBankAccount要求的所有方法,就实现了该接口,可以进行赋值,相当原子性。

感谢各位的阅读,以上就是"Google Go语言基础知识有哪些"的内容了,经过本文的学习后,相信大家对Google Go语言基础知识有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

语言 函数 接口 对象 方法 知识 变量 编译 基础 基础知识 代码 问题 运行 周长 类型 语句 面积 风格 学习 统一 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上汽大通软件开发月薪 软件开发方案合同模板下载 mac怎么连接云服务器 软件开发人员年终总结 软件开发部经理考核 网络安全宣传海报作品高质量 创建新数据库 程序连接 易班显示服务器出错 数字鼓楼业务应用及网络安全保障 软件开发过程质量控制点 阿里云服务器上传速度 erp服务器管理系统硬件 江阴重型软件开发规范 台湾服务器租云主机安全吗 宝龙达股份招聘软件开发 ftp服务器管理器 手机销售系统用了多少个数据库表 ios软件开发报告 马上能用的数据库软件 网络安全主题班会ppt 怎样配置服务器 安徽软件开发学习 数据库的表设计功能怎么用 徐汇区网络安全审计系统咨询价格 软件开发专业实地调研报告 网络安全教育倡议书400字 火狐浏览器电脑版找不到服务器 软件开发是带u还是带h的好 合肥完美世界网络技术怎么样 数据挖掘对数据库技术的要求
0