一、变量定义说明
1.打印hello world
1.1.导入fmt包,打印hello world
package main func main() { fmt.Println("hello world!") }
1.2.查看结果
2.定义变量
2.1.变量名在前,变量类型在后
不定义值,int 默认是0,string 默认是空串
package main func varckl() { var a int var s string fmt.Println(a,s) }
func varckl() {
var a int
var s string
fmt.Printf("%d %q\n",a,s)
}
2.2.查看结果
3.变量赋值初始值
3.1.赋值赋值初始值
package main func varintval() { var a, b int = 3, 5 var s string = "nogh" fmt.Println(a,b,s) }
func main() {
varintval()
}
3.2.运行结果
4.变量不定义类型
4.1.go语言自动判断变量类型,无须定义
package main func varTypeDeduction(){ var a, b, c, s = 3 ,4 ,true,"dem" fmt.Println(a,b,c,s) }
func main() {
varTypeDeduction()
}
4.2.查看结果
5.更简单的变量定义
5.1.更简单的变量定义
可以省略var 将“=”替换为“:=”,简单写法第一次必须使用”:=”,后面再赋值,则直接”=”
package main func varShort() { //只能在函数内使用 a, b, c, s := 7,8,true,"haha" fmt.Println(a,b,c,s) }
func main() {
varShort()
}
5.2.查看结果
6.函数外定义变量
6.1.定义变量在函数外
go没有全局变量,定义在函数外的变量,作用在包内
package main
//作用在main包内 var aa = 3 var bb = 4 var ss = "hi" func main() { fmt.Println(aa,bb,ss) }
6.2.执行结果
7.包内变量简单写法
7.1.简单写法
用一个var来集中定义
package main var ( mm = 9 kk = 2 tt = "sk" ) func main() { fmt.Println(mm,kk,tt) }
7.2.查看结果
二、内建变量类型
1.变量类型说明
bool、string、
整数类型:(u)int (u)int8 (u)int16 (u)int32 (u)int64
u:无符号整数
无u:有符号整数
无符号整数两类:
- 规定长度int8 int32 int64等
- 不规定长度,根据系统来
uintptr:指针
byte:字节,长度8位
rune:字符型,go语言的char类型,长度32位
浮点类型:float32 float64
复数:complex64 complex128
2.小程序测试
2.1.欧拉公式
package main
import (
"fmt"
"math/cmplx"
"math"
)
func euler() { c := 3 + 4i fmt.Println(cmplx.Abs(c)) } func main() { euler() }
2.2.查看结果
3.强制类型转换
类型转换是强制的
3.1.三角形求边
package main
import (
"fmt"
"math/cmplx"
"math"
)
func triangle() { var a, b int = 3, 4 var c int //c = math.Sqrt(a * a + b * b) //Sqrt需要一个float64,int 强制转为float64 c = int(math.Sqrt(float64(a * a + b * b))) fmt.Println(c) } func main() { triangle() }
3.2.运行结果
三、常量
1.常量定义
1.1.常量定义程序
package main import ( "fmt" "math/cmplx" "math" ) func consts() { const filename = "ckl.txt" const a,b = 3,4 var c int
//a b 不定义类型,既可以做int 又可以做float,因此不需要转换 c = int(math.Sqrt(a*a + b*b)) fmt.Println(filename,c) } func main() { consts() }
1.2.运行结果
1.3.变量简便写法
func consts() { const ( filename = "ckl.txt" a,b = 3,4 ) var c int c = int(math.Sqrt(a*a + b*b)) fmt.Println(filename,c) }
const 数值可作为各种数值使用
2.特殊常量
2.1.枚举类型举例
package main func enums() { const( cpp = 1 java = 2 python = 3 golang = 4 ) fmt.Println(cpp,java,python,golang) } func main() { enums() }
2.2.运行结果
2.3.另外简单的写法
通过iota自增写法
func enums1() { const( cpp = iota java python golang ) fmt.Println(cpp,java,python,golang) }
2.3.1.运行结果
2.3.2.修改内容
func enums1() { const( cpp = iota _ python golang javascript ) fmt.Println(cpp,java,python,golang) }
查看结果
2.3.3.其它用法
const( //1 左移后面的位 b = 1 << (10 * iota) kb mb gb tb pb ) fmt.Println(b,kb,mb,gb,tb,pb)
查看结果
四、条件语句
1.if 判断
1.1简单if判断程序
1.1.1.如果,文件正常,返回内容,否则返回错误信息
package main import ( "io/ioutil" "fmt" ) func main() { const filename = "ckl.txt" //ReadFile会返回两个值,所以定义两个变量来接收 contents,err := ioutil.ReadFile(filename) if err != nil { fmt.Println(err) } else { fmt.Printf("%s\n",contents) } }
1.1.2.运行结果
找不到文件,因为没有建立
1.1.3.新建立一个文件
1.1.4.运行程序查看
1.1.5.简单写法
package main import ( "io/ioutil" "fmt" ) func main() { const filename = "ckl.txt" //ReadFile会返回两个值,所以定义两个变量来接收 if contents,err := ioutil.ReadFile(filename);err != nil { fmt.Println(err) } else { fmt.Printf("%s\n",contents) } }
1.1.6.运行结果
1.1.7.这种写法无法访问到里面内容
因为contents只有在if 的block里面才有作用
func main() { const filename = "ckl.txt" //ReadFile会返回两个值,所以定义两个变量来接收 if contents,err := ioutil.ReadFile(filename);err != nil { fmt.Println(err) } else { fmt.Printf("%s\n",contents) } fmt.Println(contents) }
2.switch 语法
2.1.switch 默认会加break,无须手动添加,如果不需要break,则使用fallthrough
2.1.1.简单的switch小程序
package main import "fmt" func eval(a,b int,op string) int { var result int switch op { case "+": result = a + b case "-": result = a - b case "*": result = a * b case "/": result = a / b default: panic("unsupported operator:" + op) } return result } func main() { var want = eval(10,9,"+") fmt.Println(want) }
2.1.2.运行结果
2.2.switch不定义表达式
2.2.1.switch 不定义表达式的小程序
package main
import "fmt"
func grade(score int) string {
var g = ""
switch {
case score > 100 || score < 0:
panic(fmt.Sprintf("%d is not a correct number",score))
case score < 60:
g = "D"
case score < 75:
g = "C"
case score < 85:
g = "B"
case score <= 100:
g = "A"
}
fmt.Println(g)
return "finish"
}
func main() {
grade(53)
grade(67)
grade(79)
grade(89)
}
2.2.2.运行结果
2.2.3.运行一个错误的分数
func main() { grade(53) grade(67) grade(79) grade(89) grade(101) }
运行结果
转载于:https://www.cnblogs.com/ckl893/p/8639721.html
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101750.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...