一、介紹
目的:使用Go語言寫一個簡單的聊天機器人,復習整合Go語言的語法和基礎知識。
軟件環境:Go1.9,Goland 2018.1.5。
二、回顧
Go語言基本構成要素:標識符、關鍵字、字面量、分隔符、操作符。它們可以組成各種表達式和語句,而后者都無需以分號結尾。
- 標識符:程序實體,前者即為后者的名稱。
- 關鍵字:被編程語言保留的字符序列,不能把它用作標識符。
- 字面量:值的一種標記法。
- 操作符==運算符:用於執行特定算術或邏輯操作的符號,操作的對象稱為操作數。
數組:由若干相同類型的元素組成的序列。
切片(slice):可以看作是一種對數組的包裝形式,它包裝的數組稱為該切片的底層數組。
函數和方法:一個函數的聲明通常包括關鍵字func、函數名、分別由圓括號包裹的參數列表和結果列表,以及由花括號包裹的函數體。
func divide(dividend int,divisor ,int)(int,error){ } //函數可以沒有參數列表,也可以沒有結果列表,但空參數列表必須保留括號,而空結果列表則不用 func printTab(){ // }
三、程序(初版本)
代碼倉庫鏈接:https://github.com/OctopusLian/ChatRobot
package main import ( "bufio" "os" "fmt" "strings" ) func main() { inputReader := bufio.NewReader(os.Stdin) //准備從標准輸入讀取數據 fmt.Println("Please input your name:") input,err := inputReader.ReadString('\n') //讀取數據直到碰到 \n為止 if err != nil{ fmt.Printf("An error occurred:%s") os.Exit(1) //異常退出 }else { //用切片操作刪除最后的 \n name := input[:len(input)-1] fmt.Printf("Hello,%s! What can I do for you?\n",name) } for{ input,err = inputReader.ReadString('\n') if err != nil{ fmt.Printf("An error occurred:%s\n",err) continue } input = input[:len(input)-1] //全部轉換為小寫 input = strings.ToLower(input) switch input { case "": continue case "nothing","bye": fmt.Println("Bye!") //正常退出 os.Exit(0) default: fmt.Println("Sorry,I didn't catch you.") } } }
參考資料