文档章节

2:GO基础知识

悦亮工作室
 悦亮工作室
发布于 2015/05/05 17:06
字数 800
阅读 10
收藏 0
点赞 0
评论 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()
//我还没写完


© 著作权归作者所有

共有 人打赏支持
悦亮工作室
粉丝 8
博文 26
码字总数 4887
作品 0
闵行
程序员
JS Json遍历问题!

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

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

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

iyx668
07/05
0
0
计算机技术与软件专业技术资格(水平)考试

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

杰1992
2017/06/23
0
0
总结和翻译机器学习和计算机视觉类资料的博客 ( 在微博上看到的)

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

Jr小王子
2015/08/31
169
0
网管的未来出路与学习成长方向选择

一、基础网管的发展方向 1.可以学习CCNA(或同等认证的)向网络工程师方向发展 建议选择CCNA,理由如下: 1)模拟器种类多,技术成熟,路由和交换机类型多,H3C、华为模拟器相对少,可选路由...

hiyajun
2017/06/19
0
0
PostgreSQL 共享缓存代码分析交流讲座

PostgreSQL 共享缓存代码分析交流讲座 方式:在线交流,使用QQ群语音。 时间:2013年12月17日晚8点开始。 交流之前,如果有如下准备更佳: 1、PostgreSQL v9.3.2源代码(或者9.0及更高版本,...

有理想的猪
2013/12/12
221
1
Python的基础知识之常用类型-元祖

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

摸着石头过河_崖边树
2017/12/15
0
0
网络工程师考试说明

1.考试要求:   (1)熟悉计算机系统的基础知识;   (2)熟悉网络操作系统的基础知识;   (3)理解计算机应用系统的设计和开发方法;   (4)熟悉数据通信的基础知识;   (5)...

技术小甜
2017/11/09
0
0
Python的基础知识之文件IO处理

前言 磁盘上读写文件的功能都是由操作系统提供,读写文件就是请求操作系统打开一个文件对象 通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件...

摸着石头过河_崖边树
2017/12/21
0
0
Python的基础知识之时间处理-datetime

时间日历的处理三个模块,在使用之前都需要导入这么模块 1、 time模块 2、 calendar 模块 3、 datetime 模块 tmpdir17961048_05.jpg 一、time模块 1.1 获取时间戳 1.2 获取时间元祖 1.3 获取...

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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java示例演示Functor 和monad

This article was initially an appendix in our Reactive Programming with RxJavabook. However introduction to monads, albeit very much related to reactive programming, didn't suit......

Quan全
6分钟前
0
0
微信官方jssdk Demo

1.html部分 <!DOCTYPE html><!-- saved from url=(0028){sh:$selfUrl} --><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf-8"......

koloor
9分钟前
0
0
数据库命名规范

https://www.cnblogs.com/pangguoming/p/7126512.html 摘要:当前研发工作中经常出现因数据库表、数据库表字段格式不规则而影响开发进度的问题,在后续开发使用原来数据库表时,也会因为数据...

塔塔米
10分钟前
0
0
java https 请求工具类-通用

package com.ra.common.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintW......

轻量级赤影
10分钟前
0
0
MFC界面套包BCG Pro Edition for MFC正式发布v27.3|附下载

BCGControlBar Professional Edition for MFC是MFC的一个扩展库,您可以用来构建类似于Microsoft Office 2000/XP/2003/2007/2010/2013 和 Microsoft Visual Studio-like(打印、用户定制工具......

Miss_Hello_World
10分钟前
0
0
Spring Cloud云服务 - HongHu架构common-service 项目构建过程

上一篇我们介绍了《整合spring cloud云服务架构 - HongHu云架构common-service代码结构分析》,本节我们将对common-service整个项目进行剖析,将整个构建的流程给记录下来,让更多的关注者来...

itcloud
11分钟前
0
0
Connection reset

在使用HttpClient调用后台resetful服务时,“Connection reset”是一个比较常见的问题,有同学跟我私信说被这个问题困扰很久了,今天就来分析下,希望能帮到大家。例如我们线上的网关日志就会...

夜黑人模糊灬
16分钟前
0
0
如何写PHP规范注释

所有的文档标记都是在每一行的 * 后面以@开头。如果在一段话的中间出来@的标记,这个标记将会被当做普通内容而被忽略掉。 @access 该标记用于指明关键字的存取权限:private、public或prote...

度_
16分钟前
0
0
influxDB Ppostgis

PostGis 1.需要安装postgreSQL,postgis作为插件嵌入到postgreSQL中; 2.使用zip包直接安装,需要修改 makepostgisdb_using_extensions.bat文件中的路径,用户名,密码,然后直接运行; 3.没有...

courtzjl
20分钟前
0
0
多线程Thread-多线程顺序执行

需求:现在有两个任务,任务1和任务2,任务1中有多个线程,并且任务2必须等任务1完成后才能执行。 namespace TThread{ class Program { static void Main(string[] ar...

kaixinguo314
24分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部