共计 1751 个字符,预计需要花费 5 分钟才能阅读完成。
前言
学习一门语言的时候,难免从最简单的程序结构学起,这些东西在掌握了一门别的开发语言的情况 (如大名鼎鼎的 java),就会显得如鱼得水了,下面会把我学习一些简单例子分享出来。
基本程序结构
快速为一些变量赋值
const (
NUM1 = 1 + iota
NUM2
NUM3
NUM4
)
// 输出结果:1,2,4,8
func TestPrint(t *testing.T) {t.Log(NUM1, NUM2, NUM3, NUM4)
}
快速的实现一些数值交换
// 数值交换
func TestExchange(t *testing.T) {
// 也可以这样定义变量:var aa int = 1
a := 1
b := 2
t.Log(a, b)
// 交换数值
b, a = a, b
t.Log(a, b)
}
类型转换
// 给类型命名
type typeInt int64
func TestInt(t *testing.T) {
var a int64 = 2
var b int32 = 3
// 类型不可转
//a = b
var c = typeInt(3)
t.Log(a, b, c)
}
实现斐波拉切数列的两种方式
// 斐波拉切
func TestFibList(t *testing.T) {
var a int = 1
var b int = 1
t.Log(a)
for i := 0; i < 5; i++ {t.Log(b)
tmp := a + b
a = b
b = tmp
}
}
// 斐波拉切 递归
func TestFibRecursion(t *testing.T) {t.Log(FibRecursion(5))
}
func FibRecursion(i int) (result int) {
if i == 1 || i == 2 {return 1}
return FibRecursion(i-1) + FibRecursion(i-2)
}
数组比较,和 java 不同,不是比较指针,可以比较值的
// 数组比较
func TestCompareArray(t *testing.T) {a := [...]int{1, 2, 3, 4}
b := [...]int{1, 2, 2, 4}
c := [...]int{1, 2, 3, 4}
t.Log(a == b) //false
t.Log(a == c) //true
}
go 也是有指针的,但是没有细看,只是写个例子看下结果
func TestPoint(t *testing.T) {
var a int64 = 1
var aPtr = &a
t.Log(a, aPtr)// 1 0xc420018230
// 打印类: int64 *int64
t.Logf("%T %T", a, aPtr)
}
string 的默认值
func TestString(t *testing.T) {
// 默认值是 "" 不是 java 的那种 null
var str string
t.Log("+" + str + "+")// 输出 ++
}
for 循环
//for 循环 go 当中原来没有 while
func TestFor(t *testing.T) {
n := 5
for n > 0 {t.Log(n)
n--
}
}
//for 循环实现冒泡排序
func TestForSort(t *testing.T) {a := [...]int{3, 5, 2, 6, 4, 8, 2, 9,1,23,2,34,4,55,11}
for i := 0; i < len(a)-1; i++ {for j := 0; j < len(a)-i-1; j++ {if a[j] > a[j+1] {tmp := a[j]
a[j] = a[j+1]
a[j+1] = tmp
}
}
}
t.Log(a)//[1 2 2 2 3 4 4 5 6 8 9 11 23 34 55]
}
go 当中的条件判断,写起来还是很爽的
// 比较
func TestCondition(t *testing.T){
// 可以条件结果赋值给变量
if a:=3>2;a{t.Log("3>2")
}
// GOOS is the running program's operating system target:
// one of darwin, freebsd, linux, and so on.
switch runtime.GOOS{
// 自带 break
case "darwin":
t.Log("darwin")
case "freebsd":
t.Log("freebsd")
case "linux":
t.Log("linux")
default:
t.Log("default")
}
switch {
case 4>2:
t.Log("4>2")
case 4<2:
t.Log("4<2")
}
}
正文完