博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go的基本语法(变量和函数)
阅读量:7178 次
发布时间:2019-06-29

本文共 1632 字,大约阅读时间需要 5 分钟。

学习一门新语言,除了一些重要的特性以外,其实主要就是变量和函数。变量就是一个容器,用来存放值的, 函数就是一段特定的过程,它的作用是随着不同的目的而不同的,

就像数据结构和算法,所有的语言都离不开它们。

一,变量的声明和初始化

函数外的全局变量定义(必须带上var):

var a = 15    // 声明变量的同时赋值

var a int = 15  // 声明变量的同时赋值,编译器自动推导其数据类型

var a int

a =15

函数内的变量定义:

a := 10  或  var a = 10 或 var a int = 15

 

我们看到有此两种方式:

  1. var name [type] = value

    如果不书写 type ,则在编译时会根据value自动推导其类型。

  2. name := value

注意:“ :=” 是在函数内声明和初始化变量

但是!!!

var a := 15 是错误的

 

声明写法:

var a int

赋值写法:

a = 15 + 10

全局批量声明

var (

  a int

  b string

)

 

------------------------------------------------------------------------------------------ 华丽分割线 ----------------------------------------------------------------------------------------

二,函数的定义

func 函数名(参数列表) (返回值列表) {
// 函数体
}
 
例如:
函数返回单个值
func max(num1, num2 int) int {
  return result 
}
 
函数返回多个值
func swap(x, y string) (string, string) {
  return y, x
}
 
函数默认返回值

func swap(x, y string) (a string, b string) {

  a = y
  b = x
  return
}

 

如果不想关心其中的某个返回值,可以简单 地用一个下划线“_”来跳过这个返回值。

a, _ := swap("hello", "world")

 

访问权限,因为Go是以大小写来区分是公有还是私有,
大写能被包外访问,小写只能被包内访问
 
 
------------------------------------------------------------------------------------------ 华丽分割线 ----------------------------------------------------------------------------------------
三,方法和函数
go不像其它面相对象语言一样可以写个class,然后在class里面写一堆方法,所以说go不能算是面向对象,语言层面本身决定不了,关键是使用者,
这点和erlang比较像,灵活性比较高,你要造什么就造什么,简单暴力点,别绕来绕去的。
 
类似面向对象的继承层次是完全没必要的。在 Go 中,类型就是类(数据和关联的方法)。如果方法在此类型定义了,就可以调用它,和其他类型 上是否存在这个方法没有关系。
 
方法的定义:
func (receiver_name receiver_type) function_name() [return_type]{
/* 函数体*/
}
 
例如:
type Phone struct {}
 
func (p *Phone) Call() string {
return "Ring Ring"
}
 
 
 

 

转载于:https://www.cnblogs.com/huangliang-hb/p/7826745.html

你可能感兴趣的文章
yum更换国内源 yum下载rpm包 源码包安装
查看>>
i++为什么是线程不安全的
查看>>
C# log4net 不输出日志
查看>>
最好的年龄减肥
查看>>
2015第43周一solr相关概念
查看>>
大数模板
查看>>
SqlServer时间戳与普通格式的转换
查看>>
转:关于腾讯bugly崩溃的android so符号表使用
查看>>
集成支付宝后出现LaunchServices: ERROR: There is no registered handler for URL scheme alipay
查看>>
Http和Socket详解
查看>>
iOS 多线程开发之OperationQueue(二)NSOperation VS GCD
查看>>
LeetCode - Trapping Rain Water
查看>>
Codeforces 437C The Child and Toy(贪心)
查看>>
蓝桥杯 大臣的旅费
查看>>
hql中不能写count(1)能够写count(a.id)
查看>>
Atitit。Time base gc 垃圾 资源 收集的原理与设计
查看>>
还是态度问题
查看>>
判断记录是否存在的通用方法
查看>>
sift算法c语言实现
查看>>
报表中的Excel操作之Aspose.Cells(Excel模板)
查看>>