脚本宝典收集整理的这篇文章主要介绍了golang-语法,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
参考:https://m.runoob.com/go/
package main import "fmt" func main() { fmt.Println("Hello go") }
go run szj.go //执行szj.go
go build ./ //编译成可执行文件,编译后的文件为文件夹名
go build szj.go //编译成可执行文件,编译后的文件为szj
以上面的示例为例
package main //包声明,每个go项目都必须包含至少一个名为main的包 import "fmt" //导入fmt包 func main() { //程序开始执行的函数,main函数是一个项目所必须包含的。注意:{不能单独放到一行 fmt.Println("Hello go") }
var b bool = true
分为整型和浮点型
int8、int16、int32、int64,uint8、uint16、uint32、uint64
float32、float64、complex64、complex128
包括:指针类型,数组类型,结构化类型(struct),Channel 类型,函数类型,切片类型,接口类型(interface),Map 类型
package main import "fmt" func main() { // 声明一个变量并赋值,注意声明方式:[var 变量名 变量类型 = 变量值] var a string = "Runoob" fmt.Println(a) // 可以一次声明多个变量,并依次赋值。 var b, c int = 1, 2 fmt.Println(b, c) // 没有初始化就为零值 var d int fmt.Println(d) // bool 零值为 false var e bool fmt.Println(e) }
值类型:int、float、bool、string属于值类型
其他为引用类型
声明并初始化变量,我们可以省去var关键字和类型声明,a:=50或b:=false形式定义变量并初始化,这种形式只能用在函数体内。
package main import "fmt" func main() { const LENGTH int = 10 //定义常量,指定数据类型 const WIDTH = 5 //定义常量,不指定数据类型,由编译器推断 var area int const a, b, c = 1, false, "str" //多重赋值 area = LENGTH * WIDTH fmt.Printf("面积为 : %d", area) println() println(a, b, c) }
运算符和java类似,下面只介绍几个特殊的运算符
package main import "fmt" func main() { var a int = 4 var ptr *int ptr = &a /* 'ptr' 包含了 'a' 变量的地址 */ fmt.Printf("a 的值为 %dn", a); fmt.Printf("*ptr 为 %dn", *ptr); }
>go run szj.goa 的值为 4*ptr 为 4
使用func定义函数,定义函数格式如下
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) }
声明数组:var 数组名 [数组大小] 数值类型
func main() { var balance [5] float32 fmt.Println(balance) }
初始化数组
func main() { var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0} //balance := [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0} fmt.Println(balance) }
如果数组长度不确定,可以使用 ... 代替数组的长度
var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
或
balance := [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
通过指定下标初始化元素
// 将索引为 1 和 3 的元素初始化 balance := [5]float32{1:2.0,3:7.0}
func main() { var a int= 20 /* 声明实际变量 */ var ip *int /* 声明指针变量 */ ip = &a /* 指针变量的存储地址 */ fmt.Printf("a 变量的地址是: %xn", &a ) fmt.Printf("ip 变量储存的指针地址: %xn", ip ) fmt.Printf("*ip 变量的值: %dn", *ip ) }
运行结果
空指针,我们使用ptr==nil判断是否为空指针
func main() { var ptr *int fmt.Printf("ptr 的值为 : %xn", ptr) if ptr == nil { fmt.Printf("ptr是空指针") } }
类似C语言中的结构体
type Books struct { title string author string subject string book_id int } func main() { // 创建一个新的结构体 fmt.Println(Books{"Go 语言", "www.runoob.com", "Go 语言教程", 6495407}) // 也可以使用 key => value 格式 fmt.Println(Books{title: "Go 语言", author: "www.runoob.com", subject: "Go 语言教程", book_id: 6495407}) // 忽略的字段为 0 或 空 fmt.Println(Books{title: "Go 语言", author: "www.runoob.com"}) }
访问结构体成员
func main() { var Book1 Books /* 声明 Book1 为 Books 类型 */ /* book 1 描述 */ Book1.title = "Go 语言" Book1.author = "www.runoob.com" Book1.subject = "Go 语言教程" Book1.book_id = 6495407 /* 打印 Book1 信息 */ fmt.Printf( "Book 1 title : %sn", Book1.title) fmt.Printf( "Book 1 author : %sn", Book1.author) fmt.Printf( "Book 1 subject : %sn", Book1.subject) fmt.Printf( "Book 1 book_id : %dn", Book1.book_id) }
结构体作为函数参数
func main() { var Book1 Books /* 声明 Book1 为 Books 类型 */ /* book 1 描述 */ Book1.title = "Go 语言" Book1.author = "www.runoob.com" Book1.subject = "Go 语言教程" Book1.book_id = 6495407 /* 打印 Book1 信息 */ printBook(Book1) } func printBook( book Books ) { fmt.Printf( "Book title : %sn", book.title) fmt.Printf( "Book author : %sn", book.author) fmt.Printf( "Book subject : %sn", book.subject) fmt.Printf( "Book book_id : %dn", book.book_id) }
结构体指针
func main() { var Book1 Books /* 声明 Book1 为 Books 类型 */ /* book 1 描述 */ Book1.title = "Go 语言" Book1.author = "www.runoob.com" Book1.subject = "Go 语言教程" Book1.book_id = 6495407 /* 打印 Book1 信息 */ printBook(&Book1) } func printBook( book *Books ) { fmt.Printf( "Book title : %sn", book.title) fmt.Printf( "Book author : %sn", book.author) fmt.Printf( "Book subject : %sn", book.subject) fmt.Printf( "Book book_id : %dn", book.book_id) }
以上是脚本宝典为你收集整理的golang-语法全部内容,希望文章能够帮你解决golang-语法所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。