Go语言基本结构和数据类型

   日期:2020-09-13     浏览:92    评论:0    
核心提示:前面已经给大家整理过Golang的安装和环境搭建,那么基本语法今天就和大家聊聊。其实定义一个Go语言的基本结构非常简单,也就几步而已:Golang基本语法Go 语言的基础组成有以下几个部分:包声明引入包函数变量语句 & 表达式注释示例:package mainimport "fmt"func main() { fmt.Println("Hello, Go!")}解析:第一行代码 pac

前面已经给大家整理过Golang的安装和环境搭建,那么基本语法今天就和大家聊聊。
其实定义一个Go语言的基本结构非常简单,也就几步而已:

Golang基本语法

Go 语言的基础组成有以下几个部分:

  • 包声明
  • 引入包
  • 函数
  • 变量
  • 语句 & 表达式
  • 注释

示例:

package main

import "fmt"

func main() {      
        
      fmt.Println("Hello, Go!")


}

解析:

  • 第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。
    package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。

  • 第二行 import “fmt” 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。

  • 第三行 func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。

  • 下一行 // 是注释,在程序执行时将被忽略。单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 结尾,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段。

  • 最后一行 fmt.Println(…) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。
    使用 fmt.Print(“hello, world\n”) 可以得到相同的结果。
    Print 和 Println 这两个函数也支持使用变量,如:fmt.Println(arr)。如果没有特别指定,它们会以默认的打印格式将变量 arr 输出到控制台。

  • 当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public)。

  • 标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected )。

特别注意:

1、写C++ 的人都会将 “{” 独立一行,但是这在go 里面是错误的 ,“{” 必须和方法体在同一行。很多人都容易写go 的时候习惯性的就犯这个错误,最后还不知道错误在哪。

2、if…else 语句中的 else 必须和 if 的 ’ } ’ 在同一行,否则编译错误。

3、包名的定义。你必须在源文件中非注释的第一行声明包名,如:package main。
package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。

4、在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。
如果你打算将多个语句写在同一行,则必须使用 ; 人为的去区分,但在实际开发中我们并不鼓励这种做法。

5、main()函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数。

然而,每个package 中,只能有一个main() 函数,否则会报main redeclared in this block previous declaration at … 的错误。

6、当函数、结构等标识符以一个大写字母开头,如:GetInfo,那么使用这种形式的标识符的对象就可以被外部包的代码所使用,这被称为导出(像面向对象语言中的 public);

标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected )。

7、标识符用来命名变量、类型等程序实体。一个标识符实际上就是一个或是多个字母(AZ和az)数字(0~9)、下划线_组成的序列,但是第一个字符必须是字母或下划线而不能是数字。
以下是无效的标识符:

  • 1ab(以数字开头)
  • case(Go 语言的关键字)
  • a+b(运算符是不允许的)

8、错误 no new variables on left side of := ,意思是,“左边一个新的变量也没有!”

解决办法就是:对于x,y := …这种形式,只要把其中的一个变量命名成新的就可以了。

9、不能使用++自增或- -自减运算符初始化变量和对变量赋值。

执行 Go 语言命令

  1. 打开编辑器如Sublime Text3,将以上示例中的代码添加到编辑器中。
  2. 将以上代码保存为 hello.go
  3. 打开命令行,并进入程序文件保存的目录中。
  4. 输入命令 go run hello.go 并按ctrl+B执行代码。
  5. 这时在底部的控制台就会看到 “Hello Go!” 字样的输出.
  6. 还可以使用 go build 命令来生成二进制文件:
 go build hello.go
 ls

 hello    hello.go

 ./hello 


 Hello, Go!

数据类型

数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。

go中的数据类型包括基本数据类型和高级数据类型(派生类型)

基本数据类型又分为三大类:

  • 布尔型
  • 数字类型
  • 字符串类型

布尔型:

布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。

字符串类型

字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。

数字类型

整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。
分为:

  • 整数类型(byte,rune,int/uint,int8/uint8,int16/uint16,int32/uint32,int64/uint64)
  • 浮点类型(float32,float64)
  • 复数类型(complex64,complex128)
  • 其他数字类型

整数类型

浮点型

其他数字类型

高级数据类型(派生类型)

  • 数组(array)
  • 切片(slice)
  • 字典(map)
  • 通道(channel)
  • 函数(function)
  • 结构体(function)
  • 接口(interface)
  • 指针类型 (*Xxx,Pointer,uintptr)
  • 结构化类型(struct)
  • 接口类型(interface)

如果按照底层结构划分,值类型包括(所有基本数据类型,数组,结构体),引用类型包括(slice,map,channel,function,interface,指针)

总结:
如下图所示:

变量&常量

变量定义

  • 变量名由字母、数字、下划线组成,其中首个字母不能为数字,例:var name string

  • 声明:

    1、指定变量类型,声明后若不赋值,使用默认值
    var name string
    name = “李四”

    2、根据值自行判定变量类型
    var name = “李四”

    3、简短形式,省略var
    age := 10

注意:

  • (:=)是使用变量的首选形式
  • (:=)只能被用在函数体内,而不可以用于全局变量的声明与赋值
  • (:=)左侧的变量不应该是已经声明过的,否则会导致编译错误

常量定义

  • 常量的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型

  • 常量声明:

    const b string = “abc”

    iota:特殊常量

const (
	a = iota	
	b
	c
)

解析:

  • 代表连续的,无类型的整数常量
  • 以const开始的常量声明语句为单位
  • 从0开始,每赋给一个常量就递增一次
  • 一旦跨越以const开始的常量声明语句就归0
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服