網頁

2016年11月21日 星期一

[Go教學] 控制台程式參數

有一段時間沒發新的文章了(汗

前陣子用go做了一個zfs的備份工具—zbackup
這個工具是所謂的控制台應用程式(console application),所謂的控制台應用程式就是在terminal (linux) 或是 cmd (windows) 運作的應用程式,這樣的程式是可以在啟動的時候輸入參數的,那麼用go如何讀取外面來的參數呢??

比較簡單的方法就是使用args
但我後來發現另一個更方便的package—flag

這次就來介紹這兩種讀取參數的方法吧~


2016年10月2日 星期日

[Go教學] 產生隨機數

想要在go程式中產生隨機數需要使用兩個package -> math/rand , time

rand是用來產生隨機數用的
而time則是以時間來產生隨機種子

先來說說rand的部份
使用前要先用 func (r *Rand) Seed(seed int64) 來產生種子
這邊裡面要填入的是任意整數

接者使用 func (r *Rand) Int() int 來產生隨機數

以下舉個例子


2016年9月13日 星期二

[Linux] 製作可開機隨身碟

今天重灌了電腦,由於目前主要使用linux,因此需要找一個方法來將系統燒錄到隨身碟

⊳ 第一步—準備映像檔:
那這次我選用的系統是 Apricity OS
這是一款基於Arch的系統,個人還蠻喜歡他的界面的
2016-09-13 22-57-53 的螢幕擷圖.png

2016年9月11日 星期日

[Go教學] 檔案輸入輸出(基礎)

最近在處理一些資料剛好用到了go的檔案輸入輸出,底下來講一些比較基本的部份吧~

流程以及基本函式:


上面這張圖就是這次要講的4個基本函式,其中最重要的就是OpenFile()以及Close(),以下逐一介紹~

2016年9月1日 星期四

[Go教學] (4) 基礎元件宣告

就如前一單元開頭所說,Go的宣告方式非常的多元www
當初在看的時候花了不少時間才弄懂,試著找出一種最適合自己的方法就好囉OuO

宣告的方式最主要分為兩種,自己指定類型 以及 由系統決定類型


自己指定類型:

這種宣告方式就是由自己來決定所宣告的變數是什麼類型
(ps.看完這篇就知道為啥會有兩種)

公式: 型態 變數名稱 變數類型 ( = 值 )


  • 型態分為 var (variable變數) 以及 const (constant常數)
    所謂的variable就是可以在事後改變所儲存的值,反之即是constnt
  • 變數類型就是常見的 int (整數) / float(浮點數) / string(字串)
  • ( = 值 ) 指定初始數值給宣告的這個變數

2016年8月30日 星期二

[Go] 用go語言翻轉Minecraft - go-mcpi-api

(圖片來源:http://pi.minecraft.net


Mcpi是一個創世神的函式庫,可以用來操控Minecraft Pi edition的世界

看到這裡你可能會想問:

  • Minecraft Pi Edition是什麼?
    Minecraft Pi Edition是開發來讓使用者學習程式免費Minecraft版本
    為了讓使用者能更輕易的接觸到程式設計,它被設計運作在價位低廉的樹梅派(Raspberry Pi)上,因而被稱為Pi Edition

    Minecraft Pi Edition 官方網站
  • Mcpi是什麼?
    Mcpi是可以搭配Pi Edition的函式庫,可以從寫程式玩遊戲的途中學習如何使用一門語言,從遊戲中學習,我第一次接觸的時候,雖然已經有點基礎了,但還是跟同學玩的不亦樂乎www

    Mcpi就我所知最原始的版本應該是用python寫成的,網路上也可以找到許多教學,中文的部份可以參考這本書(Minecraft新魔法:打破虛擬沙盒世界的界限),這本書是以python版本的教學為主

    另一個教學是我一開始接觸的,藉由7堂課,將整個api的基本用法教過一遍,我覺得寫的非常簡單易懂
    -> TeachCraft-Challenges


2016年8月5日 星期五

[Go教學] (3) 基礎元件介紹

go語言的宣告方式實在是超多種的,光型態就足以讓初學者搞混了
對第一次接觸的人會有相當大的困擾,當初我在學的時候也是看的眼花撩亂的www

我認為只要選擇一種自己用的最習慣的方式就可以了


基本上最常用的型態就三種 int(整數) / float(浮點數/小數) / string(字串)

2016年8月4日 星期四

[Go教學] 跨平台編譯

Q: 我寫在Linux (windows)上寫的go程式要怎麼給windows (linux)使用???

可能對少部份的人會有這樣的困擾wwww
go很特別,跨平台編譯之類的非常的簡單~

之前我幫同學用go寫一些工具程式,因為我本身使用linux,而使用者多為windows,所以就有了跨平台編譯的需求

但編譯出來的結果,雖說是可以用,但在輸入輸出的地方會稍微有一點問題,所以我不建議跨平台編譯www

[Go教學] (2) 第一個程式

第一個程式不免俗的要來個hello world囉~


首先先來了解一下整個go程式的架構

觀察一下上面的程式,可以發現跟C的架構非常相像
package , import , func 三個部份組成


2016年8月3日 星期三

[Go教學] (1) 學習前準備

在正式開始學習前,先來準備開發環境

Q:我應該用什麼ide來開發呢?

A:目前我沒看到任何適合的IDE(或許visual studio可以用,但我的電腦主要系統是linux,所以沒有特別關注sor),在linux上我是使用vim做開發,也就是用文字編輯器

Q:我是不是要裝編譯器?

A:是的,就像是開發C要裝GCC/G++,以GO開發的話也需要安裝GO的編譯器喔
ps.如果要使用cgo的話也需要裝gcc喔

那麼就讓我們開始吧!!
以下會分成linux系統以及windows來做介紹,因為我沒有Mac,所以使用的Mac朋友就抱歉了QwQ

2016年8月2日 星期二

[Go教學] 序

Go語言(golang)是由google基於C開發的語言


當初會想學這個語言完全是覺得"挖大家都不會學這個也太潮了吧"OwO,後來是拿來做網頁的後端(學習中...),基於C開發的GO在很多語法上跟C很像,有C的基礎的話要上手是非常容易的,要說他有什麼特點的話,以我的了解應該是以下兩點:


  • 可以平行運算(Goroutine)
    我想這也是go很適合當作後端的原因之一,但這部份我還不是很了解,之前有學過一點cuda,平行運算要用另一種思維來看待運算這回事,但go的平行運算卻是相對來說比較簡單且易用的,有機會的話後面會介紹到OuO
  • 可以使用C的library(cgo)
    這是他基於C開發的好處,GO可以直接使用C的函式庫,甚至是將原本以C的語法寫成的自訂函式直接搬過來使用,當初看到這個整個超興奮的www


接下來會慢慢發布教學,所有的連結也會整理在這篇,敬請期待



(ps.教學主要是給有程式基礎的人喔,不用非常進階,只要有基礎就行了~)