微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

golang:基本数据类型和操作符

1). 文件名 & 关键字 & 标识符

1. 所有go源码都以 .go 结尾
2. 标识符以字母或下划线开头,大小写敏感
3. _ 是特殊标识符,用来忽略结果
4. 保留关键字

golang 关键字如下:

分享图片

包中函数调用

a. 同一个包中的函数,可直接调用 (大小写都可以)
b. 不同包中的函数,通过 包名 + 点 + 函数名进行调用函数名的首字母必须大写)

包访问控制规则:

a. 大写意味着这个函数/变量是可导出的
b. 小写意味着这个函数/变量是私有的,包外部不能访问

 

示例1:写一个程序,对于给定一个数字n,求出所有两两相加等于n的组合。

代码如下:

package main

import (
    "fmt"
)

func handle(n int){
    for i := 0;i<=n;i++ {
    fmt.Printf("%d+%d=%d\n",i,n-i,n)   //  fmt.Printf()  是格式化输出
    }
}

func main(){
    handle(5)
}

编译运行:

[[email protected] project]# go build -o bin/example01_plus go_dev/day02/example01_plus/main
[[email protected] project]# bin/example01_plus 
0+5=5
1+4=5
2+3=5
3+2=5
4+1=5
5+0=5
[[email protected] project]# 

示例2:一个程序包含两个包 add 和 main,其中 add 包中有两个变量: Name 和 age。问 main 包中如何访问 Name 和 age?

# 目录结构如下:
[[email protected] day02]# tree example02_call_var01
example02_call_var01
├── add
│   └── add.go
└── main
    └── main.go

2 directories,2 files
[[email protected] day02]# 


示例代码如下:
# 方式1:
main.go 文件:
package main

import (
    "go_dev/day02/example02_call_var01/add"
    "fmt"
)

func main(){
    fmt.Println("Name=",add.Name)
    fmt.Println("Age=",add.Age)
}

add.go 文件:
package add

var Name string = "hello world"   // 声明变量,并对变量的值进行初始化(编译时);字符串如果只声明却没初始化,则该字符串变量的值为 空
var Age int = 10        // 字符串如果只声明却没初始化,则该字符串变量的值为 0

# 编译之后的运行结果如下:
[[email protected] bin]# ./example0201 
Name= hello world
Age= 10
[[email protected] bin]# 

# 方式2:
main.go 文件:
package main

import (
    "go_dev/day02/example02_call_var02/add"
    "fmt"
)

func main(){
    add.Var_test()    //调用函数来对变量 Name 和 Age 进行初始化
    fmt.Println("Name=",add.Age)
}

add.go 文件:
package add

var Name string
var Age int

func Var_test(){   // 首字母要大写
    Name = "hello world"    // go 是编译型语言,所有的执行语句都要放到函数里面(赋值/初始化也是执行语句)
    Age = 10
}


# 错误示例:
main.go 文件内容:
package main

import (
    "go_dev/day02/example02_call_var03_err/add"
    "fmt"
)

function main(){
    fmt.Println("Name=",add.Age)
}

add.go 文件内容:
package add

var Name string 
var Age int    

Name = "hello world"  // go 是编译型语言,所有的执行语句都要放到函数中作为入口
Age = 10 

示例3:包别名的应用:开发一个程序,使用包别名来访问包中的函数

# main.go示例如下:
package main

import (
    a "go_dev/day02/example02_call_var01/add"    // 给go_dev/day02/example02_call_var01/add这个名起一个别名 a
    "fmt"
)

func main(){
    fmt.Println("Name=",a.Name)  // 使用包的别名来调用包中的函数
    fmt.Println("Age=",a.Age)
}

示例4:每个源文件都可以包含一个 init  函数,这个init函数自动被go运行框架调用一个程序演示这个功能

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐