golang algorithms