Go语言入门

一、GO语言特点

  • Go将静态语言的安全性和高效性与动态语言的易开发性进行有机结合,达到完美平衡。

  • 同时Go 语言对于网络通信、并发和并行编程的极佳支持,从而更好地利用大量的分布式和多核的计算机。

  • 构建速度快(编译和链接到机器代码的速度),一般情况下构建一个程序的时间只需要数百毫秒到几秒,摆脱了c++在构建上的噩梦。

  • Go 语言采用包模型的根本原因,这个模型通过严格的依赖关系检查机制来加快程序构建的速度,提供了非常好的可量测性。

  • 内存问题(通常称为内存泄漏)长期以来一直伴随着 C++ 的开发者们,Go 语言的设计者们认为内存管理不应该是开发人员所需要考虑的问题。因此尽管 Go 语言像其它静态语言一样执行本地代码,但它依旧运行在某种意义上的虚拟机,以此来实现高效快速的垃圾回收(使用了一个简单的标记-清除算法)

    (1)需求:

    1. 打印hello world!

截屏2021-03-31 上午10.00.04

(1) go文件的后缀是go

(2) package main

表示该hello.go文件所在的包是main,在go中,每个文件都必须归属于一个包。

(3)import “fmt”

表示:引入一个包fmt

(4) func main(){

}

func是一个关键字,表示一个函数。

main是函数名,是一个主函数,即程序入口。

2. 通过go build命令对该go文件进行编译,生成.exec文件。
>cd /Users/tjm/goproject/src/gocode/project01/main/
>go build hello.go

生成一个.exec文件

截屏2021-03-31 上午10.11.55

3. 运行hello.exec文件

截屏2021-03-31 上午10.14.23

4. 通过go run可以直接运行hello.go程序(类似于执行一个脚本文件的形式,相比编译后运行速度慢些)

截屏2021-03-31 上午10.17.10

5. go run与go build的区别
  • go build生成可执行文件,可以拷贝在没有go开发环境的机器上运行,而go run 需要go 开发环境。
  • go源代码编译成可执行文件,编译器会将程序运行依赖的库文件包含在可执行文件中,文件大小会变大很多。
  • 截屏2021-04-08 下午3.07.29
6. Go build编译时,指定生成的可执行文件名
> go build -o myhello.exe hello.go

(2)go语言程序开发注意事项

  • Go应用程序执行入口是从main开始
  • 严格区分大小写
  • Go方法由一条条语句构成,每个语句后面不需要加分号(Go会在每行后自动加分号
  • Go是一行一行进行编译的,所以一行只能写一条语句
  • GO语言定义的变量或者import的包如果没有使用到,代码不能编译通过(与别的语言最为不同的地方)

(3)Go语言转义字符(escape char)

  • \t : 制表符

  • \n :转行

  • \r :回车

    回车不是回到下一行,而是回到这一行开头,覆盖开头的字符。

    package main
    
    import "fmt"
    
    func main() {
    	fmt.Println("小兔子乖乖\r白色的")
    }
    

    截屏2021-04-08 下午3.50.15

  • \:一个\

  • \ ":一个 "

(4)代码风格

缩进

  1. shift +tab
> gofmt -w  main.go

该指令将格式化后的内容重新写入文件,当程序员重新打开文件后,就会看到格式化后的文件。

正确的代码风格

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

错误的代码风格(与c++,java不同)

package main
import "fmt"
func main()
{//go语言不允许这么写
	fmt.Println("hello world!")
}

二、变量

1. 示例

声明变量

基本语法:var 变量名 数据类型

package main
import "fmt"

func main(){
	//声明变量
	var i int
	//赋值
	i = 10
	//使用变量
	fmt.Println("i =",i)
}

2. 变量使用注意事项

(1)变量不同的声明使用方式(尤其第三种是go特有的):

package main
import "fmt"

func main(){
	//golang的变量使用方式1
	//第一种:指定变量类型,声明后若不赋值,使用默认值
	var i int
	fmt.Println("i = ",i) //int默认值为0
  
  //第二种:根据值自行判定变量类型(类型推导)
	var num = 10.10
	fmt.Println("num = ",num)
  
  //第三种:省略关键字var 注意 := 左侧的变量不能是声明过的,否则重复声明会报错
	name := "jiajia" //等价于 var name string;  name = "jiajia"
	fmt.Println("name = ",name)
}

(2)一次性声明多个变量的方式

package main
import "fmt"

func main(){
	//一次性声明多个变量方式1
  var n1, n2 ,n3 int
	fmt.Println("n1 = ",n1,"n2 = ",n2,"n3 =",n3)

	//一次性声明多个变量方式2,使用类型推导
	var n1,n2,n3 = 100,"tom",888
	fmt.Println("n1 = ",n1,"n2 = ",n2,"n3 =",n3)

	//一次性声明多个变量方式3
	n1,n2,n3 := 100,"tom",888//等价于方式2
	fmt.Println("n1 = ",n1,"n2 = ",n2,"n3 =",n3)
}

(3)声明全局变量

就是在函数外声明变量

package main
import "fmt"

//一个一个的声明全局变量
var n1 = 100
var n2 = 200
var n3 = 800
//一次性声明全局变量
var (
	n4 = 400
	n5 = 900
)

func main(){
  fmt.Println("n1 = ",n1,"n2 = ",n2,"n3 =",n3,"n4 =",n4,"n5 = ",n5)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值