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

Go語(yǔ)言基礎(chǔ)函數(shù)包的使用學(xué)習(xí)

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

實(shí)現(xiàn)加減乘除運(yùn)算

傳統(tǒng)方法實(shí)現(xiàn):

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("不合法的運(yùn)算符")
}
fmt.Printf("res=%v", res)

以上代碼的問題:

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

函數(shù)可以解決這個(gè)問題

  • 封裝
  • 傳參調(diào)用
  • 返回值

函數(shù)基本語(yǔ)法

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

執(zhí)行語(yǔ)句

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("不合法的運(yùn)算符")
    }
    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)
}

函數(shù)的問題

一個(gè)文件里出現(xiàn)超級(jí)多的函數(shù)

utils.go 文件,專門用于定義函數(shù),讓其它文件來調(diào)用,工具函數(shù)的封裝,

db.go 文件,專門定義對(duì)數(shù)據(jù)庫(kù)操作的函數(shù)

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

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

包的原理介紹

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

go的每一個(gè)文件都屬于一個(gè)包的,也就是說go以包的形式來管理文件和項(xiàng)目目錄結(jié)構(gòu)的。

大寫字母開頭的標(biāo)識(shí)符,表示該標(biāo)識(shí)符可導(dǎo)出

作用:

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

語(yǔ)法

package util

引入使用(封裝實(shí)現(xiàn)加減乘除的工具函數(shù))

包名.函數(shù)名

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

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

utils/utils.go 文件

package utils
import "fmt"
// 標(biāo)識(shí)符大寫,表示可導(dǎo)出
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("不合法的運(yùn)算符")
  }
  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   默認(rèn)寬度,精度2
// float64 3.34

包的注意事項(xiàng)

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

import "包名"

這個(gè)包名,就是 package "包名" 定義的包名,跟目錄名字沒有關(guān)系,倘若 package 定義的名字跟目錄名不一致,引入包的時(shí)候,要以package定義的包名為準(zhǔn)。

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

進(jìn)入項(xiàng)目根目錄(go build的執(zhí)行環(huán)境就是運(yùn)行命令的目錄),

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

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

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

以上就是Go語(yǔ)言基礎(chǔ)函數(shù)包的使用學(xué)習(xí)的詳細(xì)內(nèi)容,更多關(guān)于Go語(yǔ)言函數(shù)包的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用Go語(yǔ)言實(shí)現(xiàn)跨域資源共享(CORS)設(shè)置

    使用Go語(yǔ)言實(shí)現(xiàn)跨域資源共享(CORS)設(shè)置

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

    Gin框架自帶參數(shù)校驗(yàn)的使用詳解

    這篇文章主要為大家詳細(xì)介紹了如何使用Gin框架自帶的參數(shù)校驗(yàn),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解下
    2023-09-09
  • 使用Golang實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)數(shù)據(jù)包的捕獲與分析

    使用Golang實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)數(shù)據(jù)包的捕獲與分析

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

    Golang請(qǐng)求fasthttp實(shí)踐

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

    Go語(yǔ)言切片前或中間插入項(xiàng)與內(nèi)置copy()函數(shù)詳解

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

    通過源碼分析Golang?cron的實(shí)現(xiàn)原理

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

    深度解密Go語(yǔ)言中字符串的使用

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

    Go語(yǔ)言變量的聲明實(shí)現(xiàn)示例

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

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

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

    Golang基于JWT與Casbin身份驗(yàn)證授權(quán)實(shí)例詳解

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

最新評(píng)論