欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言基礎函數包的使用學習

 更新時間:2023年05月23日 10:33:14   作者:甜點cc  
本文通過一個實現加減乘除運算的小程序來介紹go函數的使用,以及使用函數的注意事項,并引出了對包的了解和使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

實現加減乘除運算

傳統(tǒng)方法實現:

var n1 float64 = 1.2
var n2 float64 = 2.1
var opt byte = '+'
var res float64

switch opt {
    case '+':
    res = n1 + n2
    case '-':
    res = n1 - n2
    case '*':
    res = n1 * n2
    case '/':
    res = n1 / n2
    default:
    fmt.Println("不合法的運算符")
}
fmt.Printf("res=%v", res)

以上代碼的問題:

  • 需求變更,取模,代碼不夠靈活
  • 不利于維護
  • 代碼冗余

函數可以解決這個問題

  • 封裝
  • 傳參調用
  • 返回值

函數基本語法

func 函數名 (形參列表) (返回值列表) {

執(zhí)行語句

return 返回值列表

}

上面代碼改寫:

func calc(n1 float64, n2 float64, opt byte) float64 {
    var res float64
    switch opt {
    case '+':
        res = n1 + n2
    case '-':
        res = n1 - n2
    case '*':
        res = n1 * n2
    case '/':
        res = n1 / n2
    default:
        fmt.Println("不合法的運算符")
    }
    return res
}

func main() {
    fmt.Println("hello fn")
    var n1 float64 = 1.2
    var n2 float64 = 2.1
    var opt byte = '+'
    var result float64 = calc(n1, n2, opt)
    fmt.Printf("%T %v \n", result, result)
}

函數的問題

一個文件里出現超級多的函數

utils.go 文件,專門用于定義函數,讓其它文件來調用,工具函數的封裝,

db.go 文件,專門定義對數據庫操作的函數

main.go 文件,引入其它文件,使用工具函數, 代碼更專注

繼而引出包的概念,分門別類的使用,也有利于多人協同開發(fā),相同的函數名可以存在不同的包下面

包的原理介紹

包的本質,實際上就是創(chuàng)建不同的文件夾,來存放程序文件。

go的每一個文件都屬于一個包的,也就是說go以包的形式來管理文件和項目目錄結構的。

大寫字母開頭的標識符,表示該標識符可導出

作用:

  • 區(qū)分相同名字的函數、變量等標識符
  • 當程序文件很多時,很好的管理項目
  • 控制函數、變量的訪問范圍,即作用域

語法

package util

引入使用(封裝實現加減乘除的工具函數)

包名.函數名

省略 GOPATH/src 或 GOROOT/src,前提是在 env.GO111MODULE=off 的情況下

import "包的路徑"
// GOPATH or GOROOT src, env.GO111MODULE=off

utils/utils.go 文件

package utils
import "fmt"
// 標識符大寫,表示可導出
func Calc(n1 float64, n2 float64, opt byte) float64 {
  var res float64
  switch opt {
  case '+':
      res = n1 + n2
  case '-':
      res = n1 - n2
  case '*':
      res = n1 * n2
  case '/':
      res = n1 / n2
  default:
      fmt.Println("不合法的運算符")
  }
  return res
}
  • main/main.go 文件
import (
    "fmt"
    "go_code/fndemo1/utils"
)

func main() {
  var n1 float64 = 1.233
    var n2 float64 = 2.111
    var opt byte = '+'
    var result float64 = utils.Calc(n1, n2, opt)
    fmt.Printf("%T %.2f= \n", result, result)
}

// %.2f   默認寬度,精度2
// float64 3.34

包的注意事項

包名建議跟目錄名保持一致,也可以不一致

import "包名"

這個包名,就是 package "包名" 定義的包名,跟目錄名字沒有關系,倘若 package 定義的名字跟目錄名不一致,引入包的時候,要以package定義的包名為準。

  • package "包名" 必須在文件的第一行,然后再 import
  • 引包路徑, GOPATH or GOROOT src目錄下, env.GO111MODULE
  • 包里面要暴露的函數,函數名必須大寫,表示可導出
  • 如果包名比較長,go支持取別名,定義別名之后,原先的包名就不好使了
  • 在同一個包下,不允許有相同的函數名
  • 如果要編譯成一個可執(zhí)行程序文件,就需要將這個包聲明為 main

進入項目根目錄(go build的執(zhí)行環(huán)境就是運行命令的目錄),

go build go_code/fndemo1/main , 在根目錄會生成main.exe可執(zhí)行文件

go build -o bin/my.exe go_code/fndemo1/main, -o表示輸出的目錄,沒有則會自動創(chuàng)建

import (
    "fmt"
    util "go_code/fndemo1/utils"
)
// 使用
util.Calc()

以上就是Go語言基礎函數包的使用學習的詳細內容,更多關于Go語言函數包的資料請關注腳本之家其它相關文章!

相關文章

  • 使用Go語言實現跨域資源共享(CORS)設置

    使用Go語言實現跨域資源共享(CORS)設置

    在Web開發(fā)中,跨域資源共享(CORS)是一種重要的安全機制,它允許許多資源在一個網頁上被另一個來源的網頁所訪問,然而,出于安全考慮,瀏覽器默認禁止這種跨域訪問,為了解決這個問題,我們可以使用Go語言來設置CORS,需要的朋友可以參考下
    2024-06-06
  • Gin框架自帶參數校驗的使用詳解

    Gin框架自帶參數校驗的使用詳解

    這篇文章主要為大家詳細介紹了如何使用Gin框架自帶的參數校驗,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解下
    2023-09-09
  • 使用Golang實現對網絡數據包的捕獲與分析

    使用Golang實現對網絡數據包的捕獲與分析

    在網絡通信中,網絡數據包是信息傳遞的基本單位,抓包是一種監(jiān)控和分析網絡流量的方法,用于獲取網絡數據包并對其進行分析,本文將介紹如何使用Golang實現抓包功能,包括網絡數據包捕獲和數據包分析,需要的朋友可以參考下
    2023-11-11
  • Golang請求fasthttp實踐

    Golang請求fasthttp實踐

    本文主要介紹了Golang請求fasthttp實踐,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Go語言切片前或中間插入項與內置copy()函數詳解

    Go語言切片前或中間插入項與內置copy()函數詳解

    這篇文章主要介紹了Go語言切片前或中間插入項與內置copy()函數詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 通過源碼分析Golang?cron的實現原理

    通過源碼分析Golang?cron的實現原理

    golang實現定時任務很簡單,只須要簡單幾步代碼即可以完成,最近在做了幾個定時任務,想研究一下它內部是怎么實現的,所以將源碼過了一遍,記錄和分享在此。需要的朋友可以參考以下內容,希望對大家有幫助
    2022-10-10
  • 深度解密Go語言中字符串的使用

    深度解密Go語言中字符串的使用

    在編程語言中,字符串發(fā)揮著重要的角色。這篇文章就來帶大家一起深度解密Go語言中的字符串,文中的示例代碼講解詳細,需要的可以參考一下
    2022-09-09
  • Go語言變量的聲明實現示例

    Go語言變量的聲明實現示例

    本文主要介紹了Go語言變量的聲明實現示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-03-03
  • Go語言的常量、枚舉、作用域示例詳解

    Go語言的常量、枚舉、作用域示例詳解

    這篇文章主要介紹了Go語言的常量、枚舉、作用域,接下來,我們將詳細了解 Go 的變量作用域規(guī)則以及這些規(guī)則如何影響代碼編寫,需要的朋友可以參考下
    2024-07-07
  • Golang基于JWT與Casbin身份驗證授權實例詳解

    Golang基于JWT與Casbin身份驗證授權實例詳解

    這篇文章主要為大家介紹了Golang基于JWT與Casbin實現身份驗證授權實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08

最新評論