文档章节

Go基础知识学习(1)

michaelpan
 michaelpan
发布于 2014/08/08 11:10
字数 873
阅读 39
收藏 0

#GO 基础知识学习

##输入代码

package main

import (
	"fmt"
)

func main() {
	//Println Printf
	fmt.Println("Golang, I am Michael.Pan!")
	i := 101
	fmt.Printf("i = %v \n", i)
	//var int string bool
	var cnt = 100
	str := "hangzhou,China"
	substr := str[1:]
	var isSuccess = true

	fmt.Printf("cnt = %v str = %v substr= %v isSuccess = %v \n", cnt, str, substr, isSuccess)
	//Const
	const MAXCOUNT = 30
	const NAME = "China"
	fmt.Printf("MAXCOUNT = %v , NAME = %v\n", MAXCOUNT, NAME)
	//calc and var +
	var j = 101
	var k int
	k = j + 19
	fmt.Printf("k = %v \n", k)
	//array
	var a [10]int
	a[0] = 10
	a[1] = 11
	fmt.Printf("a = %v \n", a)
	// array foreach
	for index, value := range a {
		fmt.Printf("index = %v, value = %v\n", index, value)
	}
	//slice add remove
	b := []int{1, 2, 3, 4, 5, 6}
	b = append(b, 7, 8, 9, 10, 11, 12)
	c := make([]int, 10, 20)
	copy(c, b)
	fmt.Printf("b = %v \nc = %v len(c) = %v cap(c) = %v\n", b, c, len(c), cap(c))
	//slice foreach
	for index, value := range c {
		fmt.Printf("index = %v, value = %v\n", index, value)
	}
	//map
	m := make(map[string]string)
	m["a"] = "China"
	m["b"] = "American"
	m["c"] = "Brizer"
	m["d"] = "Japan"
	fmt.Printf("m(1) = %v\n", m)
	delete(m, "c")
	fmt.Printf("m(2) = %v\n", m)
	value1, ok1 := m["c"]
	fmt.Printf("value1 = %v ok1 = %v\n", value1, ok1)
	value2, ok2 := m["d"]
	fmt.Printf("value2 = %v ok2 = %v\n", value2, ok2)
	for key, value := range m {
		fmt.Printf("key = %v value = %v\n", key, value)
	}

	//for exp1,2,3
	fmt.Printf("sum1 = %v,sum2 = %v,sum3 = %v\n", sum1(), sum2(), sum3())
	//switch
	fmt.Printf("str0 = %v\n", getStr(0))
	fmt.Printf("str1 = %v\n", getStr(1))
	fmt.Printf("str2 = %v\n", getStr(2))
	fmt.Printf("str3 = %v\n", getStr(3))
	fmt.Printf("str4 = %v\n", getStr(4))
	fmt.Printf("str5 = %v\n", getStr(5))
	fmt.Printf("str6 = %v\n", getStr(6))
	fmt.Printf("str6 = %v\n", getStr(100000))

	// slice append
	arr := []int{1, 2, 3, 4, 5}
	slice := arr[1:2]
	slice = append(slice, 6, 7, 8)
	fmt.Println(slice)
	fmt.Println(arr)

	// function
	fmt.Println(quicksum1(11, 12))
	fmt.Println(quicksum2(1, 2, 3, 4, 5, 6))

	// callback
	fmt.Println(quickcmp(10, 12, compare))
	fmt.Println(quickcmp(32, 12, compare))
	fmt.Println(quickcmp(12, 12, compare))

	//closure
	f1 := plus(10)
	f2 := plus(15)
	fmt.Println(f1(20))
	fmt.Println(f2(25))
}

func sum1() int {
	sum := 0
	for i := 0; i < 10; i++ {
		sum += i
	}
	return sum
}

func sum2() int {
	sum := 0
	i := 0
	for i < 10 {
		sum += i
		i++
	}
	return sum
}

func sum3() int {
	sum := 0
	i := 0
	for {
		sum += i
		i++
		if i == 10 {
			break
		}
	}
	return sum
}

func getStr(a int) string {
	var str string
	switch a {
	case 0:
		str = "China"
	case 1:
		str = "American"
	case 2, 3, 4, 5:
		str = "Japan"
	default:
		str = "others"
	}
	return str
}

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

func quicksum2(a ...int) (sum int) {
	for _, value := range a {
		sum += value
	}
	return
}

func compare(a int, b int) int {
	if a > b {
		return 1
	} else if a == b {
		return 0
	} else {
		return -1
	}
}

func quickcmp(a int, b int, f func(int, int) int) (result int) {
	result = f(a, b)
	return
}

func plus(a int) func(b int) int {
	return func(b int) int {
		return a + b
	}
}

##输出结果

Golang, I am Michael.Pan!
i = 101
cnt = 100 str = hangzhou,China substr= angzhou,China isSuccess = true
MAXCOUNT = 30 , NAME = China
k = 120
a = [10 11 0 0 0 0 0 0 0 0]
index = 0, value = 10
index = 1, value = 11
index = 2, value = 0
index = 3, value = 0
index = 4, value = 0
index = 5, value = 0
index = 6, value = 0
index = 7, value = 0
index = 8, value = 0
index = 9, value = 0
b = [1 2 3 4 5 6 7 8 9 10 11 12]
c = [1 2 3 4 5 6 7 8 9 10] len(c) = 10 cap(c) = 20
index = 0, value = 1
index = 1, value = 2
index = 2, value = 3
index = 3, value = 4
index = 4, value = 5
index = 5, value = 6
index = 6, value = 7
index = 7, value = 8
index = 8, value = 9
index = 9, value = 10
m(1) = map[a:China b:American c:Brizer d:Japan]
m(2) = map[a:China b:American d:Japan]
value1 =  ok1 = false
value2 = Japan ok2 = true
key = a value = China
key = b value = American
key = d value = Japan
sum1 = 45,sum2 = 45,sum3 = 45
str0 = China
str1 = American
str2 = Japan
str3 = Japan
str4 = Japan
str5 = Japan
str6 = others
str6 = others
[2 6 7 8]
[1 2 6 7 8]
23
21
-1
1
0
30
40

##参考文献

  1. 基础知识参考:学习GO语言.pdf 作者:Miek Gieben 翻译:邢兴
  2. 闭包参考:http://www.cnblogs.com/Jifangliang/archive/2008/08/05/1260602.html
  3. 闭包参考:http://golang.org/doc/articles/wiki/

##代码下载地址

  1. https://github.com/panyingyun/gostudy/blob/master/exp1.go

© 著作权归作者所有

共有 人打赏支持
michaelpan
粉丝 4
博文 33
码字总数 9970
作品 0
杭州
高级程序员
私信 提问
来自IOS开发工程师的零基础自学HTML5经验分享

移动互联网的火爆,而Html具有跨平台、开发快的优势,越来越受到开发者的青睐。感谢IOS开发工程师“小木_Boy”’带来的HTML5学习经验分享。 一、学习途径 1、很多视频网站 比如慕课、和极客学...

inw3cschool
2017/03/21
0
0
linux运维进阶之路

运维学习需要分为四个阶段,linux初级入门-àlinux中级进阶-àlinux高级提升,和资深方向细化。   第一阶段:初级入门   初级阶段需要把linux学习路线搞清楚,任何学习都是循序渐进的,所...

俊先生
2017/04/21
0
0
为什么网上那么多前端学习计划可以参考我们却总是半途而废?

通过《前端工作常用布局完全指南》(详情链接)的学习,能够让大家掌握css中工作最常用、最核心的布局内容。但是为了成为一个全面的合格的前端,我们必须全面的掌握css知识。今天我们就聊聊如...

会点儿前端的大彬哥
2018/11/06
0
0
linux运维进阶之路

运维学习需要分为四个阶段,linux初级入门-àlinux中级进阶-àlinux高级提升,和资深方向细化。   第一阶段:初级入门   初级阶段需要把linux学习路线搞清楚,任何学习都是循序渐进的,所...

俊先生
2017/04/21
0
0
Python的基础知识之常用类型-元祖

随着年龄的增长,发际线越来越高,头发越来越少,记忆力越来越差,因此小编为了记录学习的元祖,特写此文,与君共勉。 tmpdir17961030_49.JPG 1、元祖的定义 元祖:有序不可变集合,用()表...

摸着石头过河_崖边树
2017/12/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

[walminer bug分析]checkpoint wal记录的lsn与checkpoint记录的redo点的关系

问题背景 walminer工具的用户反馈来一个问题,不管添加了多少wal日志,想要的wal文件的解析结果总是有未解析出的部分。 分析问题 分析问题发现,checkpoint wal记录之后对某个数据page进行修...

movead
50分钟前
4
0
OSChina 周二乱弹 —— 金 冈刂 犭良

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @蓝瞳 :分享骇物乐团的单曲《I'll be the one》: 《I'll be the one》- 骇物乐团 手机党少年们想听歌,请使劲儿戳(这里) @尾生 :工作使人...

小小编辑
56分钟前
440
11
python中类方法和静态方法区别

面相对象程序设计中,类方法和静态方法是经常用到的两个术语。 逻辑上讲:类方法是只能由类名调用;静态方法可以由类名或对象名进行调用。 在C++中,静态方法与类方法逻辑上是等价的,只有一...

xiangyunyan
今天
14
0
Hibernate SQLite方言

以下代码有参考过github上国外某位大佬的,在发文的最新稳定版Hibernate上是可用的,有时间再仔细分析一下 import org.hibernate.dialect.Dialect;import org.hibernate.dialect.function.S...

CHONGCHEN
今天
4
0
CentOS 7 MariaDB搭建主从服务器

本文编写环境为CentOS7。确保关闭SELinux,关闭防火墙或者防打开指定端口。具体信息如下 #master[root@promote ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [r...

白豆腐徐长卿
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部