Golang入门
基本的项目结构
go的环境搭建比较简单就直接跳过了
工程结构如下
每一个go程序都需要依赖一个包
现在写一个简单的程序
package main
import "fmt"
func main(){
fmt.println("hello Golang")
}
同时导入多个包
import (
"fmt"
"unsafe"
)
手动编译 go build
手动执行
手动编译加执行 go run +.go(多用于测试代码)
这里不会生成可执行文件所以在我们测试代码的时候用的比较多,这种运行时间要长一点。
注意:手动编译生成的文件可以自定义名字
语法注意事项
go语言中的注释只有行注释 // 和块注释 /**/
5.格式比较固定,方法的括号或者代码块的括号必须紧接着字母或括号,换行会报错
6.一行不超过80个字符,超过的使用换行展示,尽量保持格式优雅
API(应用程序接口)
java我们会查看相应的api去看官方提供的一些方法,go语言也不例外
Go语言标准库文档中文版 | Go语言中文网 | Golang中文社区 | Golang中国 (studygolang.com)
基本变量与类型
声明变量关键字 var
格式
var name type/var name type=初期值
变量的使用步骤:
1.声明
2.赋值
3.使用(在go语言中声明的变量必须被使用,不然编译报错)
func main(){
var age int
age = 22
fmt.Println(age)
}
以上代码等同于,即声明和赋值可以同时进行
var age int=22
fmt.Println(age)
注意:变量不能重复定义,赋值的类型必须与其类型相匹配
多变量同时声明
var i,j,k int
var i,j,k=10,"tom",21.2
i,j,k := 10,"tom",21.2
全局变量的声明(在函数外面的,import下面的变量声明)
var{
n1 = 10
n2 ="tom"
}
基本数据类型
数据类型大致分类如下
整数类型
有符号
int,int8,int16,int32,int64
取值范围为
无符号
uint,uint8,uint16,uint32,uint64
取值范围0~(2的n次方)-1
所以年龄我们可以使用uint8或者byte类型就好了
这些类型都属于不同类型,golang语言中整数类型默认声明的类型是int类型
补充下Printf的用法
用于格式化,把变量的类型或者值补充到对应的占位符上
比如补充类型
func main(){
var age byte
age = 22
fmt.Println(age)
fmt.Printf("age的类型是,%T",age)
}
要查看具体字节可以使用(注意导包unsafe)
unsafe.Sizeof(age)
浮点类型
布尔类型
字符串类型
在go中属于基本数据类型,java中属于对象
同样string在go语言中也是不可变的,改变值会重新创建空间(和java类似)
下面代码会报错
var s1 string = "ni"
s1[0] = "h"
注意:
1.当字符串中没有特殊字符时我们直接用双引号——“”
2.当字符串中有特殊字符,比如空格,换行等的时候我们使用反引号—— ``
3.可以用+=对字符串进行拼接并赋值,在拼接很长需要换行的时候,+保留在最后换行
基本数据类型的默认值(零值)
数字->0 boolean->false string->“”
基本数据类型互相转换
go语言的类型分的还是比较细的,不同类型的数据不能进行运算和比较以及赋值(int和int32都属于不同类型)
需要操作前必须进行显式转换
语法:(T是数据类型,v是变量名),这种方法只适用于数字之间的转化
T(v)
注意:这样做并不会改变v的数据类型而是返回值是要转化的类型
超出类型范围的值转化会溢出,即:
128->int8 会变成-128
以下是基本类型和string之间的转化
基本->string
方法1:用fmt.Sprintf(“%参数”,表达式)
(常用)
以下是对应类型的参数
方法2:使用strconv
包下的函数
这种方法只有转布尔类型的时候比较简单,其他类型转换还是推荐方法1
string->基本
方法同样也是使用strconv
包下的函数
对于这种返回可能出现的错误信息有两种方式
第一种忽略错误信息(用下划线接收即忽略):
var b,_=strconv.ParseBool(s1)
第二种,用参数接收,再用if语句对参数进行处理
b,err:=strconv.ParseBool(s1)
if err != nil{
log.Fatal(err)
}
注意:string向基本数据类型转换的时候一定要确保能够转换(即内容和要转的类型能匹配上,而不是“golang”->boolean),否则将赋值给变量默认值