文档章节

2:GO基础知识

悦亮工作室
 悦亮工作室
发布于 2015/05/05 17:06
字数 800
阅读 10
收藏 0
package main

import (
	"fmt"
)

func main() {
	c()
}

// 1,变量
func test1() {
	//-----------------------------1.1变量声明
	var v1 int
	var v2 string
	var v3 [10]int //数组
	var v4 []int   //数组切片
	var v5 struct {
		f int
	}
	var v6 *int           //指针
	var v7 map[string]int //key为string  value为int的map
	var v8 func(a int) int
	//-----------------------------1.2变量初始化
	var v9 int = 10
	var v10 = 10
	v11 := 10
	//-----------------------------1.3匿名变量
	//当调用某函数返回多个值,而你只需要用到某几个的时候,则其他的变量用“_”来代替
	_, _, nickName := GetName()

}

//1.3 匿名变量补充
func GetName() (firstName, lastName, nickName string) {
	return "michael", "ma", "liang"
}

//二:常量
func test2() {
	//-----------------------------2.1 常量
	const Pi float64 = 3.14159265358979323846
	const zero = 0.0 //
	const (
		size int64 = 1024
		eof        = -1 //
	)
	const u, v float32 = 0, 3
	const a, b, c = 3, 4, "foo"
	//-----------------------------2.2 预订义常量
	//true false iota;iota比较特殊,是编译器可以修改的常量,在每个const出现的时候被重置为0,在下一个const出现之前,每出现一次iota会自增1
	const ( // iota被重置为0
		c0 = iota // c0 == 0
		c1 = iota // c1 == 1
		c2 = iota // c2 == 2
	)
	const (
		a1 = 1 << iota // a == 1 (iota在每个const开头每重置为0)
		b1 = 1 << iota // b == 2
		c3 = 1 << iota // c == 4
	)
	const (
		u1          = iota * 42 // u == 0
		v12 float64 = iota * 42 // v == 42.0
		w           = iota * 42 // w == 84
	)
	const x = iota // x == 0 (因为iota又被重置为0了)
	const y = iota //y==0 同上
	//-----------------------------2.3枚举
	//制定一系列相关的常量,如下
	const (
		Sunday = iota
		Monday
		Tuesday
		Wednesday
		Thursday
		Friday
		Saturday
		numberOfDays
	)

}

//三:类型
func test3() {
	//-----------------------------3.1:基础类型
	//布尔类型:bool
	//整型:int8 byte int16 int uint uintptr
	//浮点类型:float32 float64
	//复数类型:complex64 complex128
	//字符串:string
	//字符类型:rune
	//错误类型:error
	//-----------------------------3.2:复合类型
	//指针
	//数组
	//切片
	//字典
	//通道
	//结构体
	//接口

}

//四:流程控制

func test4() {
	//-----------------------------4.1选择
	switch i {
	case 0:
		fmt.Printf("0")
	case 1:
		fmt.Printf("1")
	case 2:
		fallthrough
	case 3:
		fmt.Printf("3")
	case 4, 5, 6:
		fmt.Printf("4, 5, 6")
	default:
		fmt.Printf("Default")
	}

	switch {
	case 0 <= Num && Num <= 3:
		fmt.Printf("0-3")
	case 4 <= Num && Num <= 6:
		fmt.Printf("4-6")
	case 7 <= Num && Num <= 9:
		fmt.Printf("7-9")
	}
	//-----------------------------4.2循环
	sum := 0
	for i := 0; i < 10; i++ {
		sum += i
	}
	sum2 := 0
	for {
		sum2++
		if sum2 > 100 {
			break
		}
	}
	//-----------------------------4.3跳转
	//滚你妹跳转

	it := 0
HERE:
	fmt.Println(i)
	it++
	if i < 10 {
		goto HERE
	}
	//-----------------------------4.4条件
	if a < 5 {
		return 0
	} else {
		return 1
	}

}

//五:函数
//-----------------------------5.1函数定义
//func 函数名 (参数列表)返回值{函数体  返回语句}
//大小写问题不在赘述
func ImAfunc(a int, b int) (ret int, err error) {
	if a < 0 || b < 0 {
		err = errors.New("Should be non-negative numbers!")
		return
	}
	return a + b, nil
}

//-----------------------------5.2函数调用
func a() {
	//就是这么调用的
	imafc, err := ImAfunc(1, 2)
	fmt.Println(imafc, err)
}

//-----------------------------5.3不定参数类型
func myfunc(args ...int) {
	for _, arg := range args {
		fmt.Println(arg)
	}
}

//调用
func b() {
	myfunc(1, 2, 3, 4, 5, 6, 7)
}

//-----------------------------5.4多返回值
//详见ImAfunc函数
//-----------------------------5.5匿名函数
//实例1
package main

import (
	"fmt"
)

func main() {
	func(a, b int) (sum int) {
		sum = a + b
		fmt.Println(sum)
		return
	}(1, 2)//括号后直接跟参数代表直接调用
}
//实例2
package main

import (
	"fmt"
)

func main() {
	nm := func(a, b int) (sum int) {
		sum = a + b
		fmt.Println(sum)
		return
	}
	nm(1, 2)
}
//六:错误处理
func Foo(param int)(n int, err error) {
// ...
}
//调用方式如下
n, err := Foo(0)
if err != nil {
// 错误处理
} else {
// 使用返回值
}
//七:defer
//-----------------------------7.1
func CopyFile(dst, src string) (w int64, err error) {
	srcFile, err := os.Open(src)
 	if err != nil {
	return
	}
	defer srcFile.Close()
	dstFile, err := os.Create(dstName)
	if err != nil {
		return
	}
	defer dstFile.Close()
	return io.Copy(dstFile, srcFile)
}
//-----------------------------7.2
//panic()和recover()
//我还没写完


© 著作权归作者所有

共有 人打赏支持
悦亮工作室
粉丝 9
博文 29
码字总数 5727
作品 0
闵行
程序员
私信 提问
JS Json遍历问题!

JSON数据是这样的: { "ID": 2410, "Name": "医疗机构从业人员行为规范与医学伦理学", "PID": -1, "Require": null, "subject": null, "Childs": [ { "ID": 2411, "Name": "一、医疗机构从业......

enderahkin
2018/01/03
70
1
自动聊天机器人项目班 [一门课搞定聊天机器人]

百度云盘下载 打造传统NLP聊天机器人 第1课 聊天机器人的基础模型与综述 知识点1:行业与业界综述 实战项目:最简单的Rule-Base聊天机器人 第2课 NLP基础及扫盲 知识点1:NLP基本算法 实战项...

iyx668
2018/07/05
0
0
总结和翻译机器学习和计算机视觉类资料的博客 ( 在微博上看到的)

[置顶]说明 2015年05月25日 之前在csdn写博客,可是csdn经常进不去,所以转战博客园,,就用了一键博客搬家功能,只搬过来66篇,其中Python2.3-原理之语句和语法和Python2.5-原理之模块是手动...

Jr小王子
2015/08/31
169
0
计算机技术与软件专业技术资格(水平)考试

关于北京地区2017年度计算机技术与软件专业技术资格(水平)考试有关问题的通知 京人考发〔2017〕14号 2017年3月13日 各有关单位:   根据原北京市人事局、原北京市信息化工作办公室《关于...

杰1992
2017/06/23
0
0
《Linux基础知识及命令》系列分享专栏

《Linux基础知识及命令》系列分享专栏 本专题详细为大家讲解了Linux入门基础知识,思路清晰,简单易懂。本专题非常适合刚刚学习Linux的小白来学习,通过学习该专题会让你由入门达到中级的水平...

kaixin_code
2018/12/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql 查询当天、本周,本月,上一个月的数据

今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1 近7天 SELECT * FROM 表名 wher......

BraveLN
今天
2
0
Android Multimedia框架总结(六)C++中MediaPlayer的C/S架构

前面几节中,都是通过java层调用到jni中,jni向下到c++层并未介绍 看下Java层一个方法在c++层 MediaPlayer后续过程 frameworks/av/media/libmedia/MediaPlayer.cpp 找一个我们之前熟悉的setDa...

天王盖地虎626
今天
3
0
【Linux】【MySQL】CentOS7安装最新版MySQL8.0.13(最新版MySQL从安装到运行)

1、前言   框框博客在线报时:2018-11-07 19:31:06   当前MySQL最新版本:8.0.13 (听说比5.7快2倍)   官方之前表示:MySQL 8.0 正式版 8.0.11 已发布,MySQL 8 要比 MySQL 5.7 快 2 ...

Code辉
今天
5
0
oracle dg备库重建redolog:ora-00313,ora-00312

trace文件: Errors in file /crbank/dbs/app/product/diag/rdbms/rdbs/dbs/trace/dbs_mrp0_24445130.trc: ORA-00313: open failed for members of log group 8 of thread 1 ORA-00312: onl......

hnairdb
今天
3
0
深入分析Java I/O的工作机制 (一)

1.Java的I/O类库的基本架构 先说一下什么是类库:可以说是类的集合,类库包括接口、抽象类、具体类等。 I/O是机器获取和交互信息的主要渠道。 java在I/O上也一直在做持续的优化,在1.4版开始...

java菜分享
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部