Go語言->練習6例

1.go語言的接口實現

接口(interface)是一種類型,它定義了一組方法的集合。任何類型只要實現了接口中定義的所有方法,就被認為實現了該接口。

在Go語言中,使用接口的最佳實踐可以提高代碼的可讀性、可維護性和靈活性。

  • 小接口與大接口: 盡量設計小接口,一個接口應該只包含少量的方法,而不是設計一個大而全的接口。這樣可以避免實現接口時不必要的負擔,并使接口更具通用性。
  • 基于使用場景設計接口: 設計接口時應該考慮使用場景,而不是從具體的實現出發。思考在你的應用程序中如何使用接口,以及接口應該提供哪些方法來滿足這些使用場景。
  • 使用合適的命名: 為接口和方法使用清晰的命名,使其能夠表達出其用途和功能。命名應該具有可讀性和表達性,讓其他開發者能夠輕松理解接口的用途。
  • 避免不必要的接口: 不要為每個類型都創建一個接口,只有在多個類型之間確實存在共享的行為和功能時才使用接口。不要過度使用接口,以免導致不必要的復雜性。
  • 使用接口作為函數參數和返回值: 使用接口作為函數參數和返回值,可以使函數更加通用,允許傳入不同類型的參數,并返回不同類型的結果。這可以提高代碼的復用性和擴展性。
  • 注釋和文檔: 為接口提供清晰的文檔和注釋,說明接口的用途、方法的功能和預期行為。這可以幫助其他開發者更好地理解接口的使用方式。
  • 用例驅動設計: 在設計接口時,可以從使用的角度出發,先考慮接口在實際場景中如何被調用,然后再設計接口的方法和簽名。
  • 將接口的實現與定義分離: 將接口的實現與接口的定義分開,這樣可以使實現更靈活,可以在不修改接口定義的情況下實現新的類型。
  • 默認實現: 在接口定義中,可以為某些方法提供默認實現,從而減少實現接口時的工作量。這對于可選方法或者某些方法的默認行為很有用。
  • 使用空接口謹慎: 使用空接口(interface{})應謹慎,因為它會降低類型安全性。只有在確實需要處理不同類型的值時才使用空接口,同時要注意類型斷言和錯誤處理。

設計和使用接口時要根據實際需求和項目的特點來選擇合適的方案。

package mainimport "fmt"type Shape interface {Area() float64Perimeter() float64
}type Rectangle struct {Width  float64Height float64
}func (r Rectangle) Area() float64 {return r.Width * r.Height
}func (r Rectangle) Perimeter() float64 {return 2 * (r.Height + r.Width)
}func main() {var s Shaperect := Rectangle{Height: 3, Width: 4}s = rectfmt.Println("面積:", s.Area())fmt.Println("周長:", s.Perimeter())
}// 理解與記憶方法
// 1接口是方法的集合:接口定義了一組方法,任何類型實現了這些方法就實現了接口。
// 2隱式實現:Go 不需要顯式聲明實現某個接口,只要類型的方法集包含接口的所有方法即可。
// 3空接口:interface{} 是最通用的接口,可存儲任何類型值,用于靈活性需求。
// 4接口值的內部結構:接口值包含動態類型信息和實際數據值,支持類型斷言和類型切換。
// 5鴨子類型:如果一個東西走起來像鴨子,叫起來也像鴨子,那么它就是鴨子。即,只要類型實現了接口的方法,就被認為實現了接口。

輸出結果:

Running] go run "d:\Microsoft VS Code\GOproject\src\go_code\chapter\interface\testshape\shape.go"
面積: 12
周長: 14[Done] exited with code=0 in 0.911 seconds

2.go語言中如何訪問私有成員

導出公有方法(get和set)

package mainimport "fmt"//定義一個結構體
type Person struct {name stringage  int
}//導出Get方法,獲取Name
func (p *Person) GetName() string {return p.name
}//導出Set方法,設置Name
func (p *Person) SetName(newName string) {p.name = newName
}//導出Get方法,獲取Age
func (p *Person) GetAge() int {return p.age
}//導出Set方法,設置Age
func (p *Person) SetAge(newAge int) {if newage > 0 {p.Age = newage} else {fmt.Println("年齡不能為負")}
}func main() {//創建zhangsan實例person := Person{name: "zhangsan",age:  18,}//調用Get方法fmt.Println("姓名:", person.GetName())fmt.Println("年齡:", person.GetAge())//輸出結果:// 姓名: zhangsan// 年齡: 18//調用Set方法person.SetName("Lis")person.SetAge(20)fmt.Println("新名字:", person.GetName())fmt.Println("新年齡:", person.GetAge())//測試非法參數person.SetAge(-18)
}

輸出結果:

[Running] go run "d:\Microsoft VS Code\GOproject\src\go_code\chapter4\main.go"
姓名: zhangsan
年齡: 18
新名字: Lis
新年齡: 20
年齡不能為負[Done] exited with code=0 in 1.271 seconds

3.《剪刀石頭布》游戲;

設計思路:石頭剪刀布分別用0、1、2,來表示

系統隨機輸出一個數字,用戶通過命令行輸入數字,進行對比,決定出是用戶獲勝還是系統獲勝(采用數學思想),設計避免用戶輸入其他數字,輸入其他數字輸出“請輸入正確的數字”,然后重新讓用戶輸入。

package mainimport ("bufio"  // 用于讀取用戶輸入"fmt""math/rand""os""strconv""strings""time"
)func main() {// 初始化隨機數種子localRand := rand.New(rand.NewSource(time.Now().UnixNano()))// 初始化隨機數種子computer := localRand.Intn(3)// 獲取用戶的有效輸入user := getUserInput()// 顯示雙方選擇names := []string{"石頭", "剪刀", "布"}// 顯示對戰結果fmt.Printf("\n你出了%s,系統出了%s。\n", names[user], names[computer])//判斷并顯示結果switch determineWinner(user, computer) {case 0:fmt.Println("平局")case 1:fmt.Println("你贏了!好膩害呀!")case -1:fmt.Println("系統贏了!")}
}// 判斷勝負函數
func determineWinner(user, computer int) int {//使用數學公式判斷勝負關系switch (user - computer + 3) % 3 {case 0:return 0 //平局case 1:return -1 //系統贏default:return 1 //用戶贏}
}func getUserInput() int {reader := bufio.NewReader(os.Stdin)// 使用無限循環直到獲得有效輸入for {fmt.Print("請出拳(0: 石頭,1: 剪刀,2: 布):")// 讀取輸入直到遇到換行符(Windows系統注意換行符是\r\n)input, _ := reader.ReadString('\n')// 去除首尾空白字符(包括可能的空格和換行符)input = strings.TrimSpace(input)// 將字符串轉換為整數num, err := strconv.Atoi(input)if err != nil {fmt.Println("請輸入整數") // 處理非數字輸入continue}// 驗證輸入范圍(建議先顯示錯誤再判斷范圍)if num < 0 || num > 2 {fmt.Println("請輸入0-2之間的數字!")continue}return num}
}

測試:

PS D:\Microsoft VS Code\GOproject\src\go_code\project1> go run .\3-1.go
請出拳(0: 石頭,1: 剪刀,2:):1你出來剪刀,系統出了剪刀。
平局
PS D:\Microsoft VS Code\GOproject\src\go_code\project1> go run .\3-1.go
請出拳(0: 石頭,1: 剪刀,2:):3
請輸入0-2之間的數字!
請出拳(0: 石頭,1: 剪刀,2:):4
請輸入0-2之間的數字!
請出拳(0: 石頭,1: 剪刀,2:):2你出來布,系統出了布。
平局
PS D:\Microsoft VS Code\GOproject\src\go_code\project1> go run .\3-1.go
請出拳(0: 石頭,1: 剪刀,2:):1你出來剪刀,系統出了布。
你贏了!好膩害呀!
PS D:\Microsoft VS Code\GOproject\src\go_code\project1> go run .\3-1.go
請出拳(0: 石頭,1: 剪刀,2:):0你出了石頭,系統出了剪刀。
你贏了!好膩害呀!
PS D:\Microsoft VS Code\GOproject\src\go_code\project1> 

4. 猜數字游戲

一個小游戲:在0-999之間隨機生成一個數,用戶在終端進行猜測,假設說生成的數字是100,用戶第一次猜200,那么就提示用戶“答案在在0-200區間”,以此類推,直到用戶答出爭取的數字,并輸出”您成功答出正確答案:答案;共猜了n次“

package mainimport ("bufio" // 用于讀取用戶輸入"fmt""math/rand""os""strconv""strings"
)func main() {// 初始化隨機數種子target := rand.Intn(1000)low, high := 0, 999attempts := 0reader := bufio.NewReader(os.Stdin)fmt.Println("數字猜謎游戲開始!請輸入0-999的隨機整數:")for {fmt.Printf("(%d嘗試,當前范圍[%d-%d])", attempts, low, high)input, _ := reader.ReadString('\n')input = strings.TrimSpace(input)reader.Reset(os.Stdin)guess, err := strconv.Atoi(input)if err != nil || guess < low || guess > high {fmt.Printf("請輸入%d-%d范圍內的有效整數\n", low, high)continue}attempts++if guess == target {fmt.Printf("您成功答出正確答案:%d(共嘗試%d次)\n", target, attempts)break} else if guess > target {high = guess - 1fmt.Printf("答案在更小的范圍內\n")} else {low = guess + 1fmt.Printf("答案在更大的范圍內\n")}}
}

輸出測試:

PS D:\Microsoft VS Code\GOproject\src\go_code\project2> go run .\1.go
數字猜謎游戲開始!請輸入0-999的隨機整數:
(0嘗試,當前范圍[0-999])500
答案在更小的范圍內
(1嘗試,當前范圍[0-499])300
答案在更大的范圍內
(2嘗試,當前范圍[301-499])400
答案在更小的范圍內
(3嘗試,當前范圍[301-399])150
請輸入301-399范圍內的有效整數
(3嘗試,當前范圍[301-399])350
答案在更大的范圍內
(4嘗試,當前范圍[351-399])375
答案在更大的范圍內
(5嘗試,當前范圍[376-399])190
請輸入376-399范圍內的有效整數
(5嘗試,當前范圍[376-399])390
答案在更小的范圍內
(6嘗試,當前范圍[376-389])380
答案在更大的范圍內
(7嘗試,當前范圍[381-389])385
答案在更大的范圍內
(8嘗試,當前范圍[386-389])388
答案在更大的范圍內
(9嘗試,當前范圍[389-389])389
您成功答出正確答案:389(共嘗試10次)
PS D:\Microsoft VS Code\GOproject\src\go_code\project2> 

簡易學生查詢系統

使用Go語言寫一個教學管理系統,存儲學生名字、學生年齡、學生班級、學習成績(ABCDE由高到低),然后給用戶一個終端輸入的模塊,輸入1查詢學生的基本信息(名字、班級年齡),輸入2查詢學生成績,輸入3添加學生信息,輸入4刪除學生信息,輸入5查詢所有學生信息,輸入6退出系統;要注意其中輸入非指定信息出現的問題如何解決,開始吧。

代碼實現:

package main// 導入需要的包
import ("bufio"   // 用于讀取輸入"fmt"     // 用于輸入輸出格式化"os"      // 用于操作系統交互"strconv" // 用于字符串和數字轉換"strings" // 用于字符串處理
)// 定義學生結構體,用于存儲單個學生的完整信息
type Student struct {Name  string // 學生姓名Age   int    // 學生年齡Class string // 學生所在班級Grade string // 學生成績等級(A-E)
}// 全局變量:使用切片存儲所有學生信息(切片是動態數組,可以自動擴展)
var students []Student// 查詢學生基本信息函數
func queryStudentInfo(scanner *bufio.Scanner) {fmt.Print("請輸入要查詢的學生姓名:")scanner.Scan()                            // 讀取用戶輸入name := strings.TrimSpace(scanner.Text()) // 去除前后空格found := false // 標記是否找到學生// 遍歷所有學生for _, s := range students {// 使用不區分大小寫的比較(比如輸入"zhangsan"可以匹配"ZhangSan")if strings.EqualFold(s.Name, name) {// 使用格式化輸出顯示學生信息fmt.Printf("\n學生信息:\n姓名:%s\n年齡:%d\n班級:%s\n",s.Name, s.Age, s.Class)found = true}}if !found {fmt.Println("未找到該學生信息")}
}// 查詢學生成績函數
func queryStudentGrade(scanner *bufio.Scanner) {fmt.Print("請輸入要查詢成績的學生姓名:")scanner.Scan()name := strings.TrimSpace(scanner.Text())found := false// 遍歷學生切片查找匹配項for _, s := range students {if strings.EqualFold(s.Name, name) {fmt.Printf("\n學生成績:\n姓名:%s\n成績:%s\n",s.Name, s.Grade)found = true}}if !found {fmt.Println("未找到該學生信息")}
}// 添加學生信息函數
func addStudent(scanner *bufio.Scanner) {var student Student // 創建新的學生對象// 收集學生信息并進行驗證fmt.Print("請輸入學生姓名:")scanner.Scan()student.Name = strings.TrimSpace(scanner.Text())fmt.Print("請輸入學生年齡:")scanner.Scan()// 將字符串轉換為整數,并進行有效性檢查age, err := strconv.Atoi(strings.TrimSpace(scanner.Text()))if err != nil || age < 0 { // 檢查是否為合法年齡fmt.Println("無效的年齡輸入")return // 直接返回,不繼續執行}student.Age = agefmt.Print("請輸入學生班級:")scanner.Scan()student.Class = strings.TrimSpace(scanner.Text())fmt.Print("請輸入學生成績(ABCDE):")scanner.Scan()// 處理成績輸入:轉換為大寫并去除空格grade := strings.ToUpper(strings.TrimSpace(scanner.Text()))if !isValidGrade(grade) { // 檢查成績是否合法fmt.Println("無效的成績輸入")return}student.Grade = grade// 將新學生添加到全局切片中students = append(students, student)fmt.Println("學生信息添加成功!")
}// 刪除學生信息函數
func deleteStudent(scanner *bufio.Scanner) {fmt.Print("請輸入要刪除的學生姓名:")scanner.Scan()name := strings.TrimSpace(scanner.Text())// 創建新切片保存保留的學生newStudents := make([]Student, 0)found := false// 遍歷所有學生,過濾掉要刪除的for _, s := range students {if strings.EqualFold(s.Name, name) {found = true // 標記找到要刪除的學生} else {// 將不需要刪除的學生加入新切片newStudents = append(newStudents, s)}}if found {students = newStudents // 用新切片替換原切片fmt.Println("學生信息刪除成功!")} else {fmt.Println("未找到該學生信息")}
}// 顯示所有學生信息函數
func displayAllStudent() {// 處理空數據情況if len(students) == 0 {fmt.Println("當前沒有學生信息")return}// 使用表格形式展示數據fmt.Println("\n所有學生信息:")fmt.Println("========================================")// 遍歷切片,i是索引(從0開始),s是學生對象for i, s := range students {// 格式化輸出:%-8s表示左對齊,占8個字符寬度fmt.Printf("%d. 姓名:%-8s 年齡:%-3d 班級:%-6s 成績:%s\n",i+1, s.Name, s.Age, s.Class, s.Grade)}fmt.Println("========================================")fmt.Printf("共 %d 條學生記錄\n", len(students))
}// 驗證成績是否合法的函數
func isValidGrade(grade string) bool {// 使用map實現快速查找,合法成績字典validGrades := map[string]bool{"A": true,"B": true,"C": true,"D": true,"E": true,}return validGrades[grade] // 返回查找結果
}// 主函數:程序入口
func main() {// 創建輸入掃描器,用于讀取標準輸入(鍵盤輸入)scanner := bufio.NewScanner(os.Stdin)// 無限循環顯示菜單,直到用戶選擇退出for {// 打印菜單選項fmt.Println("\n教學管理系統")fmt.Println("1. 查詢學生基本信息")fmt.Println("2. 查詢學生成績")fmt.Println("3. 添加學生信息")fmt.Println("4. 刪除學生信息")fmt.Println("5. 顯示所有學生信息")fmt.Println("6. 退出系統")fmt.Print("請選擇操作編號:")scanner.Scan()                             // 等待用戶輸入input := strings.TrimSpace(scanner.Text()) // 處理輸入// 使用switch-case處理用戶選擇switch input {case "1":queryStudentInfo(scanner)case "2":queryStudentGrade(scanner)case "3":addStudent(scanner)case "4":deleteStudent(scanner)case "5":displayAllStudent()case "6":fmt.Println("感謝使用,再見!")return // 結束程序default:fmt.Println("無效的輸入,請重新輸入")}}
}

進行測試:

PS D:\Microsoft VS Code\GOproject\src\go_code\student> .\studentmain.exe教學管理系統
1. 查詢學生基本信息
2. 查詢學生成績
3. 添加學生信息
4. 刪除學生信息
5. 顯示所有學生信息
6. 退出系統
請選擇操作編號:1
請輸入要查詢的學生姓名:hzy
未找到該學生信息教學管理系統
1. 查詢學生基本信息
2. 查詢學生成績
3. 添加學生信息
4. 刪除學生信息
5. 顯示所有學生信息
6. 退出系統
請選擇操作編號:3
請輸入學生姓名:hzy
請輸入學生年齡:19   
請輸入學生班級:Cloud1
請輸入學生成績(ABCDE):A
學生信息添加成功!教學管理系統
1. 查詢學生基本信息
2. 查詢學生成績
3. 添加學生信息
4. 刪除學生信息
5. 顯示所有學生信息
6. 退出系統
請選擇操作編號:
無效的輸入,請重新輸入教學管理系統
1. 查詢學生基本信息
2. 查詢學生成績
3. 添加學生信息
4. 刪除學生信息
5. 顯示所有學生信息
6. 退出系統
請選擇操作編號:1
請輸入要查詢的學生姓名:hzy 學生信息:
姓名:hzy
年齡:19
班級:Cloud1教學管理系統
1. 查詢學生基本信息
2. 查詢學生成績
3. 添加學生信息
4. 刪除學生信息
5. 顯示所有學生信息
6. 退出系統
請選擇操作編號:2
請輸入要查詢成績的學生姓名:hzy學生成績:
姓名:hzy
成績:A教學管理系統
1. 查詢學生基本信息
2. 查詢學生成績
3. 添加學生信息
4. 刪除學生信息
5. 顯示所有學生信息
6. 退出系統
請選擇操作編號:5所有學生信息:
========================================
1. 姓名:hzy      年齡:19  班級:Cloud1 成績:A
========================================1 條學生記錄教學管理系統
1. 查詢學生基本信息
2. 查詢學生成績
3. 添加學生信息
4. 刪除學生信息
5. 顯示所有學生信息
6. 退出系統
請選擇操作編號:4
請輸入要刪除的學生姓名:hzy
學生信息刪除成功!教學管理系統
1. 查詢學生基本信息
2. 查詢學生成績
3. 添加學生信息
4. 刪除學生信息
5. 顯示所有學生信息
6. 退出系統
請選擇操作編號:5
當前沒有學生信息教學管理系統
1. 查詢學生基本信息
2. 查詢學生成績
3. 添加學生信息
4. 刪除學生信息
5. 顯示所有學生信息
6. 退出系統
請選擇操作編號:6
感謝使用,再見!
PS D:\Microsoft VS Code\GOproject\src\go_code\student> 

文件查找:

使用Go語言做一個簡易的文件查詢系統,比如在某個文件夾下,存放一些.txt文件,現在使用Go語言去搜索文件名,搜索文件名之后直接查看文件,類似于Linux里面的ls命令找到文件后使用cat命令一個道理。開始吧。

// 文件查詢系統 - 支持按名稱搜索文本文件并查看內容
package main// 導入所需的標準庫包
import ("bufio"         // 帶緩沖的輸入輸出處理"fmt"           // 格式化輸入輸出"os"            // 操作系統功能(文件、目錄操作)"path/filepath" // 跨平臺文件路徑處理"strconv"       // 字符串與數值類型轉換"strings"       // 字符串處理工具
)// 配置常量(建議根據實際情況修改路徑)
const (searchDir = "D:/Microsoft VS Code/GOproject/src/go_code/txtlist" // 要搜索的根目錄fileExt   = ".txt"                                               // 要搜索的文件擴展名
)// searchFile 文件搜索主功能
// scanner: 從標準輸入讀取數據的掃描器
func searchFile(scanner *bufio.Scanner) {// 獲取用戶搜索關鍵詞fmt.Print("\n請輸入關鍵詞:")scanner.Scan()keyword := strings.TrimSpace(scanner.Text()) // 去除前后空格// 執行文件搜索files, err := findFiles(keyword)if err != nil {fmt.Printf("搜索失敗: %v\n", err)return}// 處理空結果情況if len(files) == 0 {fmt.Println("沒有找到匹配的文件")return}// 顯示搜索結果列表fmt.Println("\n找到以下文件:")for i, file := range files {fmt.Printf("%d. %s\n", i+1, file) // 顯示帶編號的文件路徑}// 處理用戶選擇fmt.Print("\n請輸入編號查看文件內容(輸入0返回上級):")scanner.Scan()choice := strings.TrimSpace(scanner.Text())// 轉換用戶輸入為數字index, err := strconv.Atoi(choice)// 驗證輸入有效性(重要!防止無效輸入導致程序崩潰)if err != nil || index < 0 || index > len(files) {fmt.Println("無效的選擇")return}// 顯示選定文件內容if index > 0 {showFileContent(files[index-1]) // 注意索引從1開始顯示,實際存儲從0開始}
}// showFileContent 顯示文件內容
// filePath: 要顯示文件的完整路徑
func showFileContent(filePath string) {// 讀取文件全部內容(適用于小文件)content, err := os.ReadFile(filePath)if err != nil {fmt.Printf("讀取文件失敗:%v\n", err)return}// 格式化輸出文件內容fmt.Printf("\n文件內容 [%s]:\n%s\n",filepath.Base(filePath), // 僅顯示文件名(不含路徑)string(content))         // 字節切片轉字符串// 暫停等待用戶確認fmt.Println("------------------------------")fmt.Print("按回車鍵繼續...")bufio.NewReader(os.Stdin).ReadBytes('\n') // 讀取直到回車鍵
}// findFiles 遞歸查找匹配文件
// keyword: 搜索關鍵詞(不區分大小寫)
// 返回值: 匹配文件路徑切片,錯誤信息
func findFiles(keyword string) ([]string, error) {var matches []string // 存儲匹配文件路徑// 檢查目錄是否存在(重要錯誤處理)if _, err := os.Stat(searchDir); os.IsNotExist(err) {return nil, fmt.Errorf("目錄不存在: %s", searchDir)}// 遞歸遍歷目錄(核心文件搜索邏輯)err := filepath.Walk(searchDir, func(path string, info os.FileInfo, err error) error {// 錯誤優先處理原則if err != nil {return fmt.Errorf("訪問路徑失敗: %w", err) // 包裝錯誤信息}// 篩選條件(同時滿足三個條件):// 1. 是文件(非目錄)// 2. 擴展名匹配// 3. 文件名包含關鍵詞(不區分大小寫)if !info.IsDir() &&strings.HasSuffix(info.Name(), fileExt) &&strings.Contains(strings.ToLower(info.Name()), strings.ToLower(keyword)) {matches = append(matches, path) // 記錄匹配路徑}return nil // 必須返回nil表示繼續遍歷})return matches, err
}// main 程序入口函數
func main() {// 創建標準輸入掃描器scanner := bufio.NewScanner(os.Stdin)// 主循環(保持程序持續運行)for {// 顯示操作菜單fmt.Print("\n文件查詢系統\n")fmt.Println("1. 搜索文件")fmt.Println("2. 退出系統")fmt.Print("請選擇操作:")// 獲取用戶輸入scanner.Scan()input := strings.TrimSpace(scanner.Text())// 處理菜單選擇switch input {case "1":searchFile(scanner)case "2":fmt.Println("感謝使用,再見!")return // 結束程序default:fmt.Println("無效的輸入,請重新選擇")}}
}

測試結果:(提前準備一些測試文件)

PS D:\Microsoft VS Code\GOproject\src\go_code\foundtxt> go run .\foundtxt.go文件查詢系統
1. 搜索文件
2. 退出系統
請選擇操作:1請輸入關鍵詞:yum找到以下文件:
1. D:\Microsoft VS Code\GOproject\src\go_code\txtlist\yum.txt請輸入編號查看文件內容(輸入0返回上級):
無效的選擇文件查詢系統
1. 搜索文件
2. 退出系統
請選擇操作:1  請輸入關鍵詞:yum找到以下文件:
1. D:\Microsoft VS Code\GOproject\src\go_code\txtlist\yum.txt請輸入編號查看文件內容(輸入0返回上級):1文件內容 [yum.txt]:
yum 可以下載文件。
------------------------------
按回車鍵繼續...文件查詢系統
1. 搜索文件
2. 退出系統
請選擇操作:無效的輸入,請重新選擇文件查詢系統
1. 搜索文件
2. 退出系統
exit status 0xc000013a
PS D:\Microsoft VS Code\GOproject\src\go_code\foundtxt> 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/81046.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81046.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81046.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Drivestduio 代碼筆記與理解

Rigid Node: 表示 car或者trucks Deformable Node : 表示一些 分布之外的 non-rigid 的運動物體&#xff0c; 比如遠處的行人等和Cyclist。 在 load_objects 會讀取每一個 dynamic objects 的 bounding box’的信息&#xff0c;具體如下&#xff1a; frame_instances 記錄了每…

《算法筆記》10.5小節——圖算法專題->最小生成樹 問題 E: Jungle Roads

題目描述 The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some years ago. But the jungle overtakes roads relentlessly, so the large road network is too expensive to mai…

【音視頻】SDL簡介

官網&#xff1a;官網 文檔&#xff1a;文檔 SDL&#xff08;Simple DirectMedia Layer&#xff09;是一套開放源代碼的跨平臺多媒體開發庫&#xff0c;使用C語言寫成。SDL提供數種控制圖像、聲音、輸出入的函數&#xff0c;讓開發者只 要用相同或是相似的代碼就可以開發出跨多…

SpringBoot + SSE 實時異步流式推送

前言 在當今數字化時代&#xff0c;實時數據處理對于企業的決策和運營至關重要。許多業務場景需要及時響應數據庫中的數據變化&#xff0c;例如電商平臺實時更新庫存、金融系統實時監控交易數據等。 本文將詳細介紹如何通過Debezium捕獲數據庫變更事件&#xff0c;并利用Serv…

ADS1299模擬前端(AFE)代替芯片——LHE7909

在現代醫療科技的飛速發展中&#xff0c;精確的生物電勢測量設備變得越來越重要。領慧立芯推出的LHE7909&#xff0c;是一款專為心電圖&#xff08;ECG&#xff09;和其他生物電勢測量設計的低噪聲24位模數轉換器&#xff08;ADC&#xff09;&#xff0c;為醫療設備制造商提供了…

如何實現Redis和Mysql中數據雙寫一致性

一、引言 今天我們來聊聊一個在分布式系統中非常常見但又十分棘手的問題——Redis與MySQL之間的雙寫一致性。我們在項目中多多少少都遇到過類似的困擾&#xff0c;緩存是用Redis&#xff0c;數據庫是用MySQL&#xff0c;但如何確保兩者之間的數據一致性呢&#xff1f;接下來我…

面試篇 - Transformer前饋神經網絡(FFN)使用什么激活函數?

1. FFN結構分解 原始Transformer的FFN層 FFN(x) max(0, xW? b?)W? b? # 原始論文公式 輸入&#xff1a;自注意力層的輸出 x&#xff08;維度 d_model512&#xff09; 擴展層&#xff1a;xW? b?&#xff08;擴展為 d_ff2048&#xff09; 激活函數&#xff1a;Re…

基于Python Flask的深度學習電影評論情感分析可視化系統(2.0升級版,附源碼)

博主介紹&#xff1a;?IT徐師兄、7年大廠程序員經歷。全網粉絲15W、csdn博客專家、掘金/華為云//InfoQ等平臺優質作者、專注于Java技術領域和畢業項目實戰? &#x1f345;文末獲取源碼聯系&#x1f345; &#x1f447;&#x1f3fb; 精彩專欄推薦訂閱&#x1f447;&#x1f3…

前端vue2修改echarts字體為思源黑體-避免侵權-可以更換為任意字體統一管理

1.下載字體 npm install fontsource/noto-sans-sc 不知道為什么我從github上面下載的不好使&#xff0c;所以就用了npm的 2.引用字體 import fontsource/noto-sans-sc; 在入口文件-main.js中引用 3.設置echats模板樣式 import * as echarts from echarts; // 在import的后…

51c自動駕駛~合集37

我自己的原文哦~ https://blog.51cto.com/whaosoft/13878933 #DETR->DETR3D->Sparse4D 走向長時序稀疏3D目標檢測 一、DETR 圖1 DETR架構 DETR是第一篇將Transformer應用到目標檢測方向的算法。DETR是一個經典的Encoder-Decoder結構的算法&#xff0c;它的骨干網…

【MongoDB篇】MongoDB的集合操作!

目錄 引言第一節&#xff1a;集合的“誕生”——自動出現還是手動打造&#xff1f;&#x1f914;第二節&#xff1a;集合的“查閱”——看看這個數據庫里有哪些柜子&#xff1f;&#x1f4c2;&#x1f440;第三節&#xff1a;集合的“重命名”——給文件柜換個名字&#xff01;…

Goland終端PowerShell命令失效

Goland終端Terminal的PowerShell不能使用&#xff0c;明明windows上升級了PowerShell 7設置了配置文件&#xff0c;但是只能在windows終端下使用&#xff0c;goland終端下直接失效報錯&#xff0c;安裝升級PowerShell請看Windows11終端升級PowerShell7 - HashFlag - 博客園 問…

簡單分析自動駕駛發展現狀與挑戰

一、技術進展與市場滲透 技術分級與滲透率 當前量產乘用車的自動駕駛等級以L2為主&#xff08;滲透率約51%&#xff09;&#xff0c;L3級處于初步落地階段&#xff08;滲透率約20%&#xff09;&#xff0c;而L4級仍處于測試和示范運營階段&#xff08;滲透率約11%&#xff09;2…

【C++類和數據抽象】消息處理示例(1):從設計模式到實戰應用

目錄 一、數據抽象概述 二、消息處理的核心概念 2.1 什么是消息處理&#xff1f; 2.2 消息處理的核心目標 三、基于設計模式的消息處理實現 3.1 觀察者模式&#xff08;Observer Pattern&#xff09; 3.2 命令模式&#xff08;Command Pattern&#xff09; 四、實戰場景…

【統計方法】交叉驗證:Resampling, nested 交叉驗證等策略 【含R語言】

Resampling (重采樣方法) 重采樣方法是從訓練數據中反復抽取樣本&#xff0c;并在每個&#xff08;重新&#xff09;樣本上重新調整模型&#xff0c;以獲得關于擬合模型的附加信息的技術。 兩種主要的重采樣方法 Cross-Validation (CV) 交叉驗證 &#xff1a; 用于估計測試誤…

常見的 CSS 知識點整理

1. 盒模型&#xff08;Box Model&#xff09;是什么&#xff1f;標準盒模型和 IE 盒模型的區別&#xff1f; 答案&#xff1a; CSS 盒模型將元素視為一個盒子&#xff0c;由內容&#xff08;content&#xff09;、內邊距&#xff08;padding&#xff09;、邊框&#xff08;bor…

Educational Codeforces Round 178 div2(題解ABCDE)

A. Three Decks #1.由于最后三個數會相等&#xff0c;提前算出來和&#xff0c;%3判斷&#xff0c;再判前兩個數是否大于 #include<iostream> #include<vector> #include<stdio.h> #include<map> #include<string> #include<algorithm> #…

如何創建一個導入模板?全流程圖文解析

先去找到系統內可以上傳東西的按鈕 把你的模板上傳上去,找到對應的fileName 圖里的文字寫錯了,是復制粘貼"filePath"到URL才能下載

通信原理第七版與第六版區別附pdf

介紹 我用夸克網盤分享了「通信原理 第7版》樊昌信」&#xff0c;鏈接&#xff1a;https://pan.quark.cn/s/be7c5af4cdce 《通信原理&#xff08;第7版&#xff09;》是在第6版的基礎上&#xff0c;為了適應當前通信技術發展和教學需求&#xff0c;并吸取了數十所院校教師的反…

Mysql唯一性約束

唯一性約束&#xff08;Unique Constraint&#xff09;是數據庫設計中用于保證表中某一列或多列組合的值具有唯一性的一種規則。它可以防止在指定列中插入重復的數據&#xff0c;有助于維護數據的完整性和準確性。下面從幾個方面為你詳細解釋 作用 確保數據準確性&#xff1a…