【Go】Go学习笔记(二) GO的基础知识
hello.go
package main //第一行代码 package main 定义了包名。 //你必须在源文件中非注释的第一行指明这个文件属于哪个包 import "fmt" // import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包 // fmt 一个包含了I/O的函数 func main() { fmt.Println("Hello, World!") }
标识符
当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected )
运行go文件
go run
go build //生成二进制文件
go的语法规则1
{ 不能单独放在一行
func main() {
}
上面的函数格式是对的,下面的函数格式是错的
func main()
{
}
ps:让我觉得和node.js中vue.js的语法要求一样严格
字符串连接
Go语言的字符串可以通过 + 连接
格式化字符串
格式化字符串是在编译过程中,允许编码人员通过特殊的占位符,将相关对应的信息整合或提取的规则字符串。
Go 语言中使用 fmt.Sprintf 格式化字符串并赋值给新串
package main import ( "fmt" ) func main() { // %d 表示整型数字,%s 表示字符串 var stockcode=123 var enddate="2020-12-31" var url="Code=%d&endDate=%s" var target_url=fmt.Sprintf(url,stockcode,enddate) fmt.Println(target_url) }
//输出结果
//Code=123&endDate=2020-12-31
Go语言的数据类型
布尔型bool
数字型int、float32、float64
字符串类型
派生类型:指针、数组、结构体、Channel(管道)、函数、切片、接口、Map
Go语言变量
变量声明形式:
var identifier type
var identifier1, identifier2 type
// identifier 标识符
不允许无用变量存在。除了全局变量以外。
package main import "fmt" func main() { var a string = "hello" fmt.Println(a) var b, c int = 1, 2 fmt.Println(b, c) }
第一种,指定变量类型,如果没有初始化,则变量默认为零值。
第二种,根据值自行判定变量类型。
第三种,:= //只能在函数体中出现
// intVal := 1 相等于: var intVal int intVal =1
package main var x, y int var ( // 这种因式分解关键字的写法一般用于声明全局变量 a int b bool ) var c, d int = 1, 2 var e, f = 123, "hello" //这种不带声明格式的只能在函数体中出现 //g, h := 123, "hello" func main(){ g, h := 123, "hello" println(x, y, a, b, c, d, e, f, g, h) }
值类型和引用类型
通过&i来获取变量i的内存地址。值类型的变量的值存储在栈中。
空白标识符 _ 也被用于抛弃值
package main import "fmt" func main() { var _, a int = 5, 7 fmt.Println(a) }
// 结果只会输出7
并行赋值也被用于当一个函数返回多个返回值时,比如这里的 val 和错误 err 是通过调用 Func1 函数同时得到:val, err = Func1(var1)。
常量的定义格式:
const idenyifier [type] = value
[type]的内容可以省略,又编译器根据变量的值来推断其类型。
// 常量的枚举 const ( Unknown = 0 Female = 1 Male = 2 ) // 常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过 package main import "unsafe" const ( a = "abc" b = len(a) c = unsafe.Sizeof(a) ) func main(){ println(a, b, c) }
iota特殊常量
可以认为是一个可以被编译器修改的常量。
iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使IOTA计数一次。
select条件语句
select 是 Go 中的一个控制结构,类似于用于通信的 switch 语句。
select 会循环检测条件,如果有满足则执行并退出,否则一直循环检测。
Go语言函数
func function_name( [parameter list] ) [return_types] {
函数体
}
/* 函数返回两个数的最大值 */ func max(num1, num2 int) int { /* 声明局部变量 */ var result int if (num1 > num2) { result = num1 } else { result = num2 } return result }
函数返回多个值
package main import "fmt" func swap(x, y string) (string, string) { return y, x } func main() { a, b := swap("Google", "Runoob") fmt.Println(a, b) }
Go语言函数闭包
Go语言函数方法
浙公网安备 33010602011771号