golang-语法

发布时间:2022-06-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了golang-语法脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

参考:https://m.runoob.com/go/

1 最简单的go程序

package main

import "fmt"

func main() {
    fmt.Println("Hello go")
}

go run szj.go //执行szj.go

go build ./ //编译成可执行文件,编译后的文件为文件夹名

go build szj.go //编译成可执行文件,编译后的文件为szj

2 go程序的组成

以上面的示例为例

package main //包声明,每个go项目都必须包含至少一个名为main的包

import "fmt" //导入fmt包

func main() { //程序开始执行的函数,main函数是一个项目所必须包含的。注意:{不能单独放到一行
    fmt.Println("Hello go")
}

3 数据类型

3.1 布尔型

 var b bool = true 

3.2 数字类型

分为整型和浮点型

3.2.1 整型

int8、int16、int32、int64,uint8、uint16、uint32、uint64

3.2.2 浮点型

float32、float64、complex64、complex128

3.3 字符串类型

 

3.4 派生类型

包括:指针类型,数组类型,结构化类型(struct),Channel 类型,函数类型,切片类型,接口类型(interface),Map 类型

4 变量

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)
}

 

4.1 值类型和引用类型

值类型:int、float、bool、string属于值类型

其他为引用类型

4.2 :=赋值操作符

声明并初始化变量,我们可以省去var关键字和类型声明,a:=50或b:=false形式定义变量并初始化,这种形式只能用在函数体内。

5 常量

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)
}

6 运算符

运算符和java类似,下面只介绍几个特殊的运算符

6.1 &和*表示获取变量地址和指针变量

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

7 函数

使用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)
}

8 数组

声明数组: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}

9 指针

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 )
}

运行结果

golang-语法

 

 

空指针,我们使用ptr==nil判断是否为空指针

func main() {
    var  ptr *int
    fmt.Printf("ptr 的值为 : %xn", ptr)

    if ptr == nil {
        fmt.Printf("ptr是空指针")
    }
}

10 结构体

类似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,请注明来意。
标签: