golang經常使用手冊:數組、變量做用域、函數

學習是一個趁熱打鐵的過程,高效的學習能提升大腦反應。因此咱們接着瞭解go語言的數組、變量做用域、函數。html

數組java

  • 和其餘語言申明相似:var variable_name [SIZE] variable_type
  • 全部數據的數據類型相同且惟一
  • 數據長度固定且不可更改
  • 經過位置獲取元素

咱們能夠看看一小段代碼:編程

//定義名稱爲balance長度爲10的float32數組
var balance [10] float32

//初始化
balance = {1000.0, 2.0, 3.4, 7.0, 50.0}

//固然下面這樣直接申明和初始化
var balance = [10]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

//若是忽略 [] 中的數字不設置數組大小,Go 語言會根據元素的個數來設置數組的大小:
var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

//多維數組格式: var variable_name [SIZE1][SIZE2]...[SIZEN] variable_type
var a = [3][4]int{  
 {0, 1, 2, 3} ,   /* 第一行索引爲 0 */
 {4, 5, 6, 7} ,   /* 第二行索引爲 1 */
 {8, 9, 10, 11}   /* 第三行索引爲 2 */
}
複製代碼

變量做用域數組

正如咱們瞭解的其餘語言同樣,go同樣存在了變量以及他的做用域。一樣的,跟咱們以往的瞭解同樣,go的變量做用域有如下幾點:閉包

  • 局部變量(在函數中申明的變量。做用域只在函數體內,參數和返回值變量也是局部變量)
    • 形式參數(函數參數)
  • 全局變量(在函數外申明的變量)
package main

import "fmt"

/* 聲明全局變量 */
var g int

func main() {

   /* 聲明局部變量 */
   var a, b int

   /* 初始化參數 */
   a = 10
   b = 20
   g = a + b

   fmt.Printf("結果: a = %d, b = %d and g = %d\n", a, b, g)
}
複製代碼

注意:go語言中局部變量和全局變量能夠同名,可是函數中會清閒考慮同名的局部變量。函數

函數學習

和其餘任何語言同樣,go語言同樣存在函數,函數固定格式以下:spa

func function_name( [parameter list] ) [return_types] {
   函數體
}
複製代碼

func是函數申明標誌,function_name是函數名稱,固然函數參數和函數返回值都是能夠沒有的。指針

須要注意的是,go語言能夠有多個返回值:code

package main

import "fmt"

func swap(x, y string) (string, string) {
   return y, x
}

func main() {
   a, b := swap("Mahesh", "Kumar")
   fmt.Println(a, b)
}
複製代碼

函數參數傳遞方式(和C語言相似):

  • 值傳遞
    • 將須要傳遞的數據拷貝一份並賦值給被調用函數的參數
  • 引用傳遞
    • 在調用函數的時候把數據的內存地址傳遞過去,在函數中依據地址對數據進行修改將會影響實際值。(和c語言中的指針操做同樣)

函數的用法:

  • 做爲數據值使用(不推薦,必定層面上下降了可讀性)
  • 閉包:匿名函數,可在動態編程中使用
  • 方法:包含了接受者的函數,接受者能夠是命名類型或者結構體類型的一個值或者是一個指針。全部給定類型的方法屬於該類型的方法集。
    • 語法:func (variable_name variable_data_type) function_name() [return_type]{···}

關於方法的demo咱們參考下菜鳥教程

package main

import (
   "fmt"  
)

/* 定義函數 */
type Circle struct {
  radius float64
}

func main() {
  var c1 Circle
  c1.radius = 10.00
  fmt.Println("Area of Circle(c1) = ", c1.getArea())
}

//該 method 屬於 Circle 類型對象中的方法
func (c Circle) getArea() float64 {
  //c.radius 即爲 Circle 類型對象中的屬性
  return 3.14 * c.radius * c.radius
}
複製代碼

總結

go語言有着和其餘語言的共性,均有數組、變量做用域、函數等基本概念。

其中數組和其餘語言的操做方式基本相同,變量做用域也是同樣的效果,惟一值得注意的是局部變量和全局變量同名時,在方法中優先考慮局部變量。

函數,其實也是咱們java中說的方法,可是go語言中的方法則是有指明 接受者 的函數。


若是你承認我所作的事情,而且認爲我作的事對你有必定的幫助,但願你也能打賞我一杯咖啡,謝謝。

支付寶捐贈
相關文章
相關標籤/搜索