首页 > 编程语言 > 详细

Go语言学习(一)

时间:2021-07-31 11:17:10      阅读:17      评论:0      收藏:0      [点我收藏+]

1、hello world程序

package main

import (
	"fmt"      // 用来格式化输出数据,比如字符串,整数,小数
)

func main() {
	fmt.Println("hello world")
}

函数定义的规则:

func 函数名 (参数列表) (返回值列表){
  函数体
}

这里主要说一下返回值列表:接受这几种类型,返回值类型列表,参数列表(变量名与类型的结合)
请注意:函数定义返回值时,函数体里面必须要有return语句
其次,函数的左大括号必须写在func这一行的最后,不能另起一行来写。
2、编译、运行
go buildgo run的区别:go build仅仅表示编译,不代表运行。而go run在编译的同时直接运行程序,常用于调试程序。
需要注意的点:go build后面如果是多个文件的话,依次跟上,比如:
a.go文件

package main

import (
	"fmt"
)

func main() {
	fmt.Println("hello world")
	pkgfunc()
}

b.go文件

package main

import "fmt"

func pkgfunc(){
	fmt.Println("hello hahaha")
}

编译:go build a.go b.go
运行:

PS D:\go> .\a.exe
hello world
hello hahaha

3、变量的声明
使用var关键字声明变量

var name type

比如:var name stringvar age int
基本类型如下所示:

bool
string
int、int8、int16、int32、int64
uint、uint8、uint16、uint32、uint64、uintptr
byte // uint8 的别名
rune // int32 的别名 代表一个 Unicode 码
float32、float64
complex64、complex128

批量声明变量

var (
  name string
  age int
  id []flost32
  d func() bool
)

简短格式声明

名字 := 表达式

但是有一些限制:
1、定义变量的同时进行初始化
2、不能提供数据类型
3、只能在函数内部使用
比如下面这个例子

func main(){
  x := 100
  a,s := 1, ‘abc‘
}

简短变量声明被广泛用于大部分的局部变量的声明和初始化。var 形式的声明语句往往是用于需要显式指定变量类型地方,或者因为变量稍后会被重新赋值而初始值无关紧要的地方
4、变量初始化的标准格式

var 变量名 类型 = 表达式

比如:

var hp int = 100

表示声明一个变量hp,是int整型,值是100

编译器推到类型的格式:

# 可以简写
var hp = 100

也就是将int省略,编译器根据右值推导hp变量的类型
举几个例子:

var a = 40
var b= 20
var c float32 = 0.17
var d = float32(a-b) * c

像第三行的float32就不能省略,因为默认编译器当成64位的,但是这样子明显不是我们要的效果,此处需要强转,也就是手动声明float32
第四行的也是需要强转,因为需要把结果进行转化成float32类型的。

短变量声明并初始化
var的变量声明使用短格式有个注意事项

hp := 100

也就是这个hp变量不能在此之前被提前定义过,否则会编译错误。
短声明的形式在开发中的例子较多,比如

conn, err := net.Dial("tcp", "127.0.0.1:8080")

这种形式使用的比较多。

5、匿名变量
匿名变量在go语言里面使用 " _ "表示,这是一个特殊的标识符,被称为空白标识符。任何类型都可以赋值给这个变量,但是任何变量的值都将被抛弃。

package main

import "fmt"

func GetData() (int,int){
	return 100,200
}



func main(){
	a, _ := 100,200
	_, b :=100,200
	fmt.Println(a,b)
	
}

特点:匿名变量不占用内存空间,不会分配内存
6、变量的作用域
根据变量定义位置的不同,可以分为三种情况:
a、函数内定义的变量称为局部变量
b、函数外定义的变量称为全局变量
c、函数定义中的变量称为形式参数

先来讲讲局部变量
局部变量只作用在函数体内,且不可跨函数使用。

package main

import "fmt"

func main(){
	var a int = 3
	var b int = 4
	c := a + b
	fmt.Printf("a = %d, b = %d, c = %d\n",a,b,c)
}

讲讲全局变量
全局变量只需要在一个源文件中定义即可,就可以在所有的源文件中使用。其中不包含这个全局变量的源文件需要使用import关键字引入全局变量所在的源文件之后才能使用这个全局变量
注意:全局变量必须使用var关键字进行定义。如果想要在外部包中引入变量的首字母必须是大写

package main

import "fmt"

var c int

func main(){
	c = 100
	fmt.Printf("c = %d\n",c)
	var a int = 3
	var b int = 4
	c := a + b
	fmt.Printf("a = %d, b = %d, c = %d\n",a,b,c)
}

运行结果如下所示:

PS D:\go> go build c.go
PS D:\go> .\c.exe      
c = 100
a = 3, b = 4, c = 7

再来讲讲形式参数
形式参数只在函数调用时才会生效。函数调用结束后销毁。形式参数只会作为函数的局部变量来使用。

package main
import (
	"fmt"
)

var a int = 13

func main(){
	var a int = 3
	var b int = 4
	fmt.Printf("main()函数中 a = %d\n",a)
	fmt.Printf("main()函数中 b = %d\n",a)
	c := sum(a,b)
	fmt.Printf("main()函数的两个值得结果是: %d\n",c)
}

func  sum(a, b int) int {
	num := a + b
	return num
}

看结果

PS D:\go> go build c.go
PS D:\go> .\c.exe      
main()函数中 a = 3
main()函数中 b = 3
main()函数的两个值得结果是: 7

Go语言学习(一)

原文:https://www.cnblogs.com/FengGeBlog/p/15083473.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!