golang和c的代码有很大不同的,一不小心就会误用。
1 /* go保留字: */
/*
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var */
/*1 package Name 包的名字 */
//package go_reserved
package main //No1
/*2 import "Name" 导入包
import (
别名 "fmt" 一旦启用别名,就不能再使用原名了.
"..."
)
*/
import ( //No2
f "fmt"
"io"
"os"
"strconv"
)
/*3 func 函数定义(形参)(返回列表类型)
return 函数返回
func func_name()(X .. Xn's type){
...
...
return X .. Xn
}
func (p mytype) funcname(q int) (r,s int) { return 0,0 }
func: 函数保留字
(p mytype): method,这部分称之为receiver而它是可选的.
funcname: 函数名
(q int): 输入参数
(r,s int): 返回值类型列表
{ return 0,0 }: 函数体
*/
func sum(a int, b int)(int){//No3
return a+b
}
/*4 var 变量定义
var a int
var b bool
var c,d int
var (
a int
b bool
c, d = 3, 4
)
c ,d := 3, 4
*/
func func_var(){
f.Println("var测试举例:")
var (//No4
a, b = ,
c int
)
f.Println("I Love Golang")
sum := sum(a,b)
c=sum
f.Println("3+5=",c)
}
/*5 const 变量名: 只能是数字、字符串或布尔值.
const x = 3
const (
a = iota
b = iota
c //默认是c=iota
...
)
*/
func func_const(){
f.Println("const生成枚举值举例:")
const ( //No5
aa = iota
ab
as = "Love"
ac
ad = iota
ae
)
f.Println("const: ", aa, ab, as, ac, ad, ae)
}
/*6 7 if (语句;)条件 {
...
} else {
...
}
*/
func func_if(){
f.Println("条件判断(if...else...)举例:")
const ( //No5
aa = iota
ab
as = "Love"
ac
ad = iota
ae
)
//条件判断表达式
if aa == { //No6
f.Println("aa is:", aa)
}else if (aa+) == {
f.Println("ab is:", ab)
}else{ //No7
f.Println(as)
}
} /*8 for .. ;条件; .. {
...
}
*/
func func_for(){
f.Println("循环判断(for)及数组定义举例:")
//定义数组方法.
var arr[] int;
for i:=; i<; i++{//No7 跳出for循环,i就失效了.
arr[i]=i
}
for i:=; i<; i++{
f.Printf("arr[%d]:%d ",i,arr[i])
}
f.Println("");
a3:=[] int {,,}
for i:=; i<; i++{
f.Printf("a[%d]:%d ",i,a3[i])
}
f.Println("");
a4 := [...] int {,,,,,,}
for i:=; i<; i++{
f.Printf("a[%d]:%d ",i,a4[i])
}
f.Println("")
a := [][] int {[] int{,}, [] int {,}}
b := [][] int {[...] int {,}, [...] int {,}}
c := [][] int {{,},{}}
for i:=; i<; i++{
for j:=; j<; j++{
f.Printf("a[%d][%d]=%d, b[%d][%d]=%d, c[%d][%d]=%d\n",+
i,j,a[i][j],i,j,b[i][j],i,j,c[i][j])
}
}
f.Println("");
}
/*9 switch 语句,变量,常量,... {
10 case X1,...,Xn:
...
11 case Y1,...,Yn: fallthrough //若匹配不到,则自动向下尝试.
case Z1:
f() //当匹配到Z1时,因为有fallthrough所以会调用f().
...
12 default:
...
}
*/
func func_switch(key int){
f.Println("switch { case: .. case: .. default: ... }接口测试举例:")
const ( //No5
aa = iota
ab
as
ac
ad
ae
)
switch key{//No9
case aa: //No10
f.Println("key is", aa)
case ab, as: //ab, as is display ab
f.Println("key is", ab)
case ac: //ac is lost
case ad:
f.Println("key is", ad)
case ae: fallthrough //No11 ae is not lost
default: //No12
f.Println("Default key is", key)
}
}
/*13 type 别名
type mytype int
*/
func func_type(){
f.Println("type测试举例:")
type mytype int //No13
var a mytype
a=
f.Println(a)
}
/*14 map[<from type>]<to type>
15 range
在 Go 中有 map 类型.
map 可以认为是一个用字符串做索引的数组(在其最简单的形式下)
*/
func func_map(){
monthdays := map[string]int{
"Jan":,"Feb":,"Mar":,"Apr":,
"May":,"Jun":,"Jul":,"Aug":,
"Sep":,"Oct":,"Nov":,"Dec":, //最后必须有逗号,
}
md := make(map[string]int) //No14 声明map的方法.
md = monthdays; //这种方式是指向同一个内存,若操作均发生变化.
f.Println(monthdays)
f.Println(md)
value,ok := monthdays["Jun"]
f.Println("md's length=",len(md), "monthdays' length=", len(monthdays), value, ok)
monthdays["Jun"] = , false //删除该元素 方法1.
v,o := monthdays["Jun"]
f.Println(monthdays)
f.Println(md)
f.Println("md's length=",len(md), "monthdays' length=", len(monthdays), v, o)
mk := make(map[string]int) //声明map的方法.
for key,ve := range monthdays{ //No15
mk[key]=ve //这种方式赋值,不会使用monthdays的空间.
}
f.Println(mk)
delete(mk, "Jan") //删除该元素 方法2.
f.Println("mk is:", mk)
f.Println("monthdays is", monthdays)
}
/*16 goto
goto标签,函数内部跳转.
*/
func func_goto(){
i :=
next:
if i<{
f.Printf("%d ", i)
i=i+
goto next //No16
}
f.Printf("\ni=%d>=10, Func_goto is stoped!\n", i)
}
/*17 defer 延后执行方法
18 return 返回值列表
func func_name(){
file.Open("filename")
defer file.Close() //在func_name()函数退出前执行close
...
}
*/
func readfile() string {
fi,err := os.Open("json.go")
if err != nil{
panic(err)
}
defer fi.Close() //No17
chunks := make([]byte,,)
buf := make([]byte,)
for{
n,err := fi.Read(buf)
if err != nil && err != io.EOF{
panic(err)
}
if ==n { break }
chunks=append(chunks, buf[:n]...)
f.Println(string(buf[:n]))
}
return string(chunks) //No18
}
/*19 struct 结构体
type 别名 struct{
var1 vartype
var2 vartype
...
}
*20 continue 继续下一个
*21 break 跳出本次循环
*/
func func_struct(){
type student struct{ //No19
id int
score int
name string
}
var s[] student
for i:=; i<; i=i+{
s[i].id=i+
s[i].score=i+
s[i].name="Name"+strconv.Itoa(i)
}
for i:=; i<; i++{
if i%== { continue }//No20
if i%== { break }//No21
f.Println(s[i])
}
for i,value:=range s{
f.Println(i, value)
}
f.Println(s)
}
/*22 interface
方法集合
*/
type S struct {
i int
}
func (p *S) Get() int{
return p.i
}
func (p *S) Put(v int){
p.i=v
}
type I interface{
Get() int
Put(int)
}
func func_interface(p I){
p.Put()
f.Println("Interface is:",p.Get())
}
/*23 go
*/
func myprint(s string){
f.Printf("%v is Ready!\n", s)
}
func func_go(){
go myprint("I")
go myprint("Love")
go myprint("Golang")
f.Println("func_go is Waiting")
}

golang语言部分保留字的举例的更多相关文章

  1. TODO:Golang语言TCP/UDP协议重用地址端口

    TODO:Golang语言TCP/UDP协议重用地址端口 这是一个简单的包来解决重用地址的问题. go net包(据我所知)不允许设置套接字选项. 这在尝试进行TCP NAT时尤其成问题,其需要在同一 ...

  2. hbase rest api接口链接管理【golang语言版】

    # go-hbase-resthbase rest api接口链接管理[golang语言版]关于hbase的rest接口的详细信息可以到官网查看[http://hbase.apache.org/boo ...

  3. 将c语言的结构体定义变成对应的golang语言的结构体定义,并将golang语言结构体变量的指针传递给c语言,cast C struct to Go struct

    https://groups.google.com/forum/#!topic/golang-nuts/JkvR4dQy9t4 https://golang.org/misc/cgo/gmp/gmp. ...

  4. Atitit.go语言golang语言的新的特性  attilax总结

    Atitit.go语言golang语言的新的特性  attilax总结 1. 继承树less  动态接口1 1.1. 按照书中说的,Go语言具有以下的特征,下面我们分别来进行介绍.  q 自动垃圾回收 ...

  5. golang语言入门及安装

    golang语言入门及安装 go语言是google在2009年发布的开源编程语言使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全.支持并行进程. 本次讲解在windows上安装go语言的开 ...

  6. RabbitMQ官方教程三 Publish/Subscribe(GOLANG语言实现)

    RabbitMQ官方教程三 Publish/Subscribe(GOLANG语言实现) 在上一个教程中,我们创建了一个工作队列. 工作队列背后的假设是,每个任务都恰好交付给一个worker处理. 在这 ...

  7. RabbitMQ官方教程二 Work Queues(GOLANG语言实现)

    RabbitMQ官方教程二 Work Queues(GOLANG语言实现) 在第一个教程中,我们编写了程序来发送和接收来自命名队列的消息. 在这一部分中,我们将创建一个工作队列,该队列将用于在多个wo ...

  8. RabbitMQ官方教程一Hello World(GOLANG语言实现)

    介绍 RabbitMQ是消息中间件:它接受并转发消息. 您可以将其视为邮局系统:将要发送的邮件放在邮箱中时, 可以确保邮递员最终将邮件传递给收件人. 以此类推,RabbitMQ是一个邮箱,一个邮局和一 ...

  9. Golang语言编程规范

    Golang语言编程规范 一.说明 编程规范好,可避免语言陷阱,可有利团队协作,有利项目维护. 正常的Go编程规范有两种:编译器强制的(必须的),gofmt格式化非强制的(非必须). Go宣告支持驼峰 ...

随机推荐

  1. java split IP地址要用双斜杠

    示例代码: public void test() { String address = "11.12.13.14:800"; System.out.println(address. ...

  2. vlc/ffmepg/mplayer/gstreamer/openmax/mpc/ffdshow/directshow

    一些应该学习的开源框架与库用途和差别 一.播放器层次 这个层次上,是直接可以用的软件,已经做完了一切工作,如果我们需要用他们,是不需要写一行代码的,编译通过就可以拿来使用了,对于国内这些山寨公司来说, ...

  3. python os.stat() 和 stat模块详解

    stat 系统调用时用来返回相关文件的系统状态信息的. 首先我们看一下stat中有哪些属性: >>> import os >>> print os.stat(&qu ...

  4. java:继承

    一.继承: java只支持单继承,一个子类只能继承一个父类,使用继承是为了减少类的重复代码,且父类的构造函数不能被子类继承. 当两个类里面有相同的属性或方法,就应该考虑使用继承解决重复代码了. 继承的 ...

  5. Java API —— Map接口

    1.Map接口概述         · 将键映射到值的对象         · 一个映射不能包含重复的键         · 每个键最多只能映射到一个值   2.Map接口和Collection接口的 ...

  6. Docker实例教程[超详细](一)

    Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互 ...

  7. 进程间通信机制<转>

    1   文件映射 文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待.因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容. ...

  8. javascript插件编写小结

    写JS插件,最好是先通过HTML方式将展示结果显示出来,然后再封装成JS插件,将其画出来.JS模板如下: (function($){ $.fn.fnName = function(options){ ...

  9. 前端JS对后台传递的timestamp的转换

    后台传递的timestamp类型的数据的JSON: Date.prototype.format = function(format) { var o = { "M+" : this ...

  10. UVa 10652 (简单凸包) Board Wrapping

    题意: 有n块互不重叠的矩形木板,用尽量小的凸多边形将它们包起来,并输出并输出木板总面积占凸多边形面积的百分比. 分析: 几乎是凸包和多边形面积的裸题. 注意:最后输出的百分号前面有个空格,第一次交P ...