golang语言部分保留字的举例
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语言部分保留字的举例的更多相关文章
- TODO:Golang语言TCP/UDP协议重用地址端口
TODO:Golang语言TCP/UDP协议重用地址端口 这是一个简单的包来解决重用地址的问题. go net包(据我所知)不允许设置套接字选项. 这在尝试进行TCP NAT时尤其成问题,其需要在同一 ...
- hbase rest api接口链接管理【golang语言版】
# go-hbase-resthbase rest api接口链接管理[golang语言版]关于hbase的rest接口的详细信息可以到官网查看[http://hbase.apache.org/boo ...
- 将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. ...
- Atitit.go语言golang语言的新的特性 attilax总结
Atitit.go语言golang语言的新的特性 attilax总结 1. 继承树less 动态接口1 1.1. 按照书中说的,Go语言具有以下的特征,下面我们分别来进行介绍. q 自动垃圾回收 ...
- golang语言入门及安装
golang语言入门及安装 go语言是google在2009年发布的开源编程语言使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全.支持并行进程. 本次讲解在windows上安装go语言的开 ...
- RabbitMQ官方教程三 Publish/Subscribe(GOLANG语言实现)
RabbitMQ官方教程三 Publish/Subscribe(GOLANG语言实现) 在上一个教程中,我们创建了一个工作队列. 工作队列背后的假设是,每个任务都恰好交付给一个worker处理. 在这 ...
- RabbitMQ官方教程二 Work Queues(GOLANG语言实现)
RabbitMQ官方教程二 Work Queues(GOLANG语言实现) 在第一个教程中,我们编写了程序来发送和接收来自命名队列的消息. 在这一部分中,我们将创建一个工作队列,该队列将用于在多个wo ...
- RabbitMQ官方教程一Hello World(GOLANG语言实现)
介绍 RabbitMQ是消息中间件:它接受并转发消息. 您可以将其视为邮局系统:将要发送的邮件放在邮箱中时, 可以确保邮递员最终将邮件传递给收件人. 以此类推,RabbitMQ是一个邮箱,一个邮局和一 ...
- Golang语言编程规范
Golang语言编程规范 一.说明 编程规范好,可避免语言陷阱,可有利团队协作,有利项目维护. 正常的Go编程规范有两种:编译器强制的(必须的),gofmt格式化非强制的(非必须). Go宣告支持驼峰 ...
随机推荐
- hdu 1352 I Conduit!
计算几何,主要是排序问题,其他都很好做…… ;}
- 0环境设置 - SQLPLUS设置
define _editor=vi - SQL*PLUS默认编辑器set serveroutput on size 1000000 - 默认打开DBMS_OUTPUT, 不用每次使用都执行这个命令来启 ...
- hibernate.cfg.xml hibernate 配置文件模板
<?xml version='1.0' encoding='UTF-8'?> <!--表明解析本XML文件的DTD文档位置,DTD是Document Type Definition ...
- ActiveMQ 学习笔记
http://somebody-hjh.iteye.com/blog/726050 一.概述 Message,即消息.人与人之间通过消息传递信息.言语.眼神.肢体动作都可被视为消息体.当然还有我们经常 ...
- lintcode:递归打印数字
题目 用递归打印数字 用递归的方法找到从1到最大的N位整数. 样例 给出 N = 1, 返回[1,2,3,4,5,6,7,8,9]. 给出 N = 2, 返回[1,2,3,4,5,6,7,8,9,10 ...
- 【多媒体封装格式详解】---MKV
http://blog.csdn.net/tx3344/article/details/8162656# http://blog.csdn.net/tx3344/article/details/817 ...
- 区分int a() 和 int a
事因 #include <iostream> using namespace std; struct A { A(int) {} A() {} void fun() {}; }; int ...
- csh与bash比较
csh与bash比较:一.csh的while循环控制结构及if then:#!/bin/csh -fwhile ($#argv >= 1) if ("$1" == &quo ...
- 卷积神经网络Convolutional Neural Networks
Convolutional Neural Networks NOTE: This tutorial is intended for advanced users of TensorFlow and a ...
- Java解压上传zip或rar文件,并解压遍历文件中的html的路径
1.本文只提供了一个功能的代码 public String addFreeMarker() throws Exception { HttpSession session = request.getSe ...