一、GO语法结构
1.示例代码
package main //包声明,必须出现在源文件第一行,指明文件处于哪个包
import "fmt" //引入文件中需要的包文件
func main() { //文件执行入口
/* 这是我的第一个简单的程序 */ //注释格式,同普通C格式
fmt.Println("Hello, World!") //主要代码功能区
}
##
标识符
1)当标识符以 大写字母 开头,则可被外部包访问
2)当标识符以 小写字母 开头,则仅可被内部包访问
##
注意事项
1)“{”不能单独放在一行,会出现运行时错误
2)文件名与包名并无直接关系,并非需要一致
3)同一个文件夹下的文件只能有一个包名,否则编译报错
4)代码模块每行可以不写分号,当同行有多句代码时需要用分号间隔
2.GO代码的执行
1)go run 文件名 //执行代码
2)go build 文件名 //编译生成二进制文件
二、语言基础语法
1.标记:GO程序由多个标记组成,标记是代码中可以拆解的最小的有意义的单位,如:关键字、标识符、常量、字符串、符号等
如:fmt.Println("Hello, World!")
分解为:fmt . Println ( "Hello, World!" )
2.行分隔符
1)每行只有一个语句的时候可以不写任何分隔符
2)需同行写多句代码时,需用分号间隔
3.标识符规范
1)由字母、数字、下划线组成
2)第一个字符必须是字母或下划线
3)关键字不能作为标识符
4.字符串
1)字符串:是由双引号括起的一段字符序列
2)转义字符:换行符 \n、回车符 \r、tab键 \t、Unicode字符 \u、反斜杠 \\
3)字符串拼接:使用“+”或“+=”可以完成字符串拼接
4)字符串是一种值类型,且值不可变,即创建某个文本后你无法再次修改这个文本的内容;更深入地讲,字符串是字节的定长数组。
5.变量
(1)单变量声明
1)指定变量类型不赋值,则变量默认为零(没有初始化时系统默认的值)
如:var name type
各类型零值:数值类型:0、bool:false、字符串:“”、复杂数据类型:指针/数组/字典等:null
2)不指定变量类型,指定初值,根据初值自行判定数据类型
如:var name = value
3)使用“:=”可以声明新的变量,而不用使用var,但对已有变量赋值时会报错
如正确声明: name1 := value //name1从未被定义
如错误声明:var name2 = value2;name2 := value3
##注意
:= 操作符只能用于函数体内部,不能用户全局变量的声明与赋值
(2)多变量声明
1)类型相同的多个变量声明
如: var name1,name2,name3 type; name1,name2,name3=value1,value2,value3
2)类型不同的多个变量声明
如:var(name1 type1;name2 type2……)
(3)值类型和引用类型
1)基本数据类型均属于值类型:int、float、bool、string,直接指向内存在内存中的值
a. 可以通过print直接输出变量值:fmt.Println(i)
b. 可以通过&获得变量地址:fmt.Println(&i)
c. 将一个变量赋给另一个变量时,是对值进行了拷贝赋在了新的内存地址中
6.常量
(1)常量:在程序运行过程中不会被修改的量
如:const name [type] = value
显式类型定义:const b string ="abc"
隐式类型定义:const b = "abc"
1)常量枚举定义
const (
Unknown = 0
Female = 1
Male = 2
)
(2)iota:可以变化的特殊常量,系统自定义
iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。
测试代码
package main
import "fmt"
func main(){
fmt.Println("Hello, World!");
fmt.Println("Hello, World22!")
//转义字符相关
/*fmt.Print("\n")
fmt.Print("\r")
fmt.Print("\t")
fmt.Print("\u")
fmt.Print("\\")
*/
//验证省略var时必须声明全新的变量
//var vname1, vname2, vname3 = "1", "2", "3" // 和 python 很像,不需要显示声明类型,自动推断
//nvname1, nvname2, nvname3 := "1", "2", "3" // 出现在 := 左侧的变量不应该是已经被声明过的,否则会导致编译错误
var i,j int;
i = 1;
j = i;
fmt.Println(i);
fmt.Println(j)
fmt.Println(&i)
fmt.Println(&j)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)